File tree Expand file tree Collapse file tree 1 file changed +16
-11
lines changed
consensus/src/quorum_store Expand file tree Collapse file tree 1 file changed +16
-11
lines changed Original file line number Diff line number Diff line change @@ -38,25 +38,30 @@ impl BatchRequesterState {
3838
3939 fn next_request_peers ( & mut self , num_peers : usize ) -> Option < Vec < PeerId > > {
4040 let signers = self . signers . lock ( ) ;
41+
4142 if self . num_retries == 0 {
4243 let mut rng = rand:: thread_rng ( ) ;
4344 // make sure nodes request from the different set of nodes
4445 self . next_index = rng. r#gen :: < usize > ( ) % signers. len ( ) ;
45- counters:: SENT_BATCH_REQUEST_COUNT . inc_by ( num_peers as u64 ) ;
46+ counters:: SENT_BATCH_REQUEST_COUNT . inc_by ( num_peers. min ( signers . len ( ) ) as u64 ) ;
4647 } else {
47- counters:: SENT_BATCH_REQUEST_RETRY_COUNT . inc_by ( num_peers as u64 ) ;
48+ counters:: SENT_BATCH_REQUEST_RETRY_COUNT . inc_by ( num_peers. min ( signers . len ( ) ) as u64 ) ;
4849 }
4950 if self . num_retries < self . retry_limit {
5051 self . num_retries += 1 ;
51- let ret = signers
52- . iter ( )
53- . cycle ( )
54- . skip ( self . next_index )
55- . take ( num_peers)
56- . cloned ( )
57- . collect ( ) ;
58- self . next_index = ( self . next_index + num_peers) % signers. len ( ) ;
59- Some ( ret)
52+ if signers. len ( ) <= num_peers {
53+ Some ( signers. iter ( ) . cloned ( ) . collect ( ) )
54+ } else {
55+ let ret = signers
56+ . iter ( )
57+ . cycle ( )
58+ . skip ( self . next_index )
59+ . take ( num_peers)
60+ . cloned ( )
61+ . collect ( ) ;
62+ self . next_index = ( self . next_index + num_peers) % signers. len ( ) ;
63+ Some ( ret)
64+ }
6065 } else {
6166 None
6267 }
You can’t perform that action at this time.
0 commit comments