44use std:: { cmp:: Ordering , collections:: BTreeMap , future:: Future , sync:: Arc } ;
55
66use custom_debug_derive:: Debug ;
7- use futures:: {
8- stream:: { FuturesUnordered , StreamExt } ,
9- FutureExt ,
10- } ;
7+ use futures:: stream:: { FuturesUnordered , StreamExt } ;
118use linera_base:: {
129 crypto:: ValidatorPublicKey ,
1310 data_types:: { Blob , BlobContent , BlockHeight } ,
@@ -666,15 +663,7 @@ impl<Env: Environment> RequestsScheduler<Env> {
666663
667664 // Execute the actual request
668665 tracing:: trace!( key = ?key, peer = ?peer, "executing new request" ) ;
669- let result = futures:: select! {
670- _timeout = linera_base:: time:: timer:: sleep( self . retry_delay) . fuse( ) => {
671- tracing:: trace!( key = ?key, "retry delay elapsed, proceeding with request" ) ;
672- Err ( NodeError :: WorkerError { error: "timeout" . to_string( ) } ) // Placeholder error to trigger retries
673- } ,
674- result = operation( peer. clone( ) ) . fuse( ) => {
675- result
676- }
677- } ;
666+ let result = operation ( peer. clone ( ) ) . await ;
678667
679668 // If the first request failed, try alternative peers in staggered parallel
680669 let result = if result. is_err ( ) {
@@ -765,8 +754,7 @@ impl<Env: Environment> RequestsScheduler<Env> {
765754 }
766755
767756 // Wait for first success or collect all failures
768- // Placeholder for the last error. If we error, this will be updated.
769- let mut last_error = NodeError :: UnexpectedMessage ;
757+ let mut last_error = None ;
770758
771759 while let Some ( ( peer_idx, result) ) = futures. next ( ) . await {
772760 match result {
@@ -785,7 +773,7 @@ impl<Env: Environment> RequestsScheduler<Env> {
785773 error = %e,
786774 "staggered parallel retry attempt failed"
787775 ) ;
788- last_error = e ;
776+ last_error = Some ( e ) ;
789777 }
790778 }
791779 }
@@ -795,7 +783,7 @@ impl<Env: Environment> RequestsScheduler<Env> {
795783 key = ?key,
796784 "all staggered parallel retry attempts failed"
797785 ) ;
798- Err ( last_error)
786+ Err ( last_error. unwrap_or ( NodeError :: UnexpectedMessage ) )
799787 }
800788
801789 /// Returns all peers ordered by their score (highest first).
0 commit comments