@@ -5,7 +5,7 @@ use alloy::{
5
5
use alloy_primitives:: { keccak256, Bytes , B256 } ;
6
6
use alloy_rlp:: Buf ;
7
7
use std:: { sync:: OnceLock , time:: Duration } ;
8
- use tokio:: { select , sync:: mpsc, task:: JoinHandle } ;
8
+ use tokio:: { sync:: mpsc, task:: JoinHandle } ;
9
9
use tracing:: Instrument ;
10
10
use zenith_types:: { encode_txns, Alloy2718Coder } ;
11
11
@@ -158,33 +158,25 @@ impl BlockBuilder {
158
158
/// Spawn the block builder task, returning the inbound channel to it, and
159
159
/// a handle to the running task.
160
160
pub fn spawn ( mut self , outbound : mpsc:: UnboundedSender < InProgressBlock > ) -> JoinHandle < ( ) > {
161
- let mut sleep =
162
- Box :: pin ( tokio:: time:: sleep ( Duration :: from_secs ( self . incoming_transactions_buffer ) ) ) ;
163
-
164
161
tokio:: spawn (
165
162
async move {
166
163
loop {
167
-
168
- select ! {
169
- biased;
170
- _ = & mut sleep => {
171
- // Build a block
172
- let mut in_progress = InProgressBlock :: default ( ) ;
173
- self . get_transactions( & mut in_progress) . await ;
174
- self . get_bundles( & mut in_progress) . await ;
175
-
176
- if !in_progress. is_empty( ) {
177
- tracing:: debug!( txns = in_progress. len( ) , "sending block to submit task" ) ;
178
- let in_progress_block = std:: mem:: take( & mut in_progress) ;
179
- if outbound. send( in_progress_block) . is_err( ) {
180
- tracing:: debug!( "downstream task gone" ) ;
181
- break
182
- }
183
- }
184
-
185
- // Reset the sleep timer, as we want to do so when (and only when) our sleep future has elapsed,
186
- // irrespective of whether we have any blocks to build.
187
- sleep. as_mut( ) . reset( tokio:: time:: Instant :: now( ) + Duration :: from_secs( self . incoming_transactions_buffer) ) ;
164
+ // sleep the buffer time
165
+ tokio:: time:: sleep ( Duration :: from_secs ( self . incoming_transactions_buffer ) )
166
+ . await ;
167
+
168
+ // Build a block
169
+ let mut in_progress = InProgressBlock :: default ( ) ;
170
+ self . get_transactions ( & mut in_progress) . await ;
171
+ self . get_bundles ( & mut in_progress) . await ;
172
+
173
+ // submit the block if it has transactions
174
+ if !in_progress. is_empty ( ) {
175
+ tracing:: debug!( txns = in_progress. len( ) , "sending block to submit task" ) ;
176
+ let in_progress_block = std:: mem:: take ( & mut in_progress) ;
177
+ if outbound. send ( in_progress_block) . is_err ( ) {
178
+ tracing:: debug!( "downstream task gone" ) ;
179
+ break ;
188
180
}
189
181
}
190
182
}
0 commit comments