@@ -33,7 +33,7 @@ async fn run(
3333 let sequencing_config = ingestion_config. sequencing ;
3434 let settlement_config = ingestion_config. settlement ;
3535
36- let ( mut sequencer_ingestor , sequencer_rx) =
36+ let ( mut sequencing_ingestor , sequencer_rx) =
3737 Ingestor :: new ( sequencing_config. into ( ) ) . await . map_err ( |e| {
3838 RuntimeError :: Initialization ( format ! (
3939 "Failed to create ingestor for sequencing chain: {}" ,
@@ -50,60 +50,53 @@ async fn run(
5050 } ) ?;
5151
5252 let slotter = Slotter :: new ( sequencer_rx, settlement_rx, slotting_config) ;
53- let slotter_rx = slotter. await . start ( ) ; // TODO(SEQ-515): refactor me to get the channel without starting the slotter already?
5453
55- let block_builder = BlockBuilder :: new ( slotter_rx, block_builder_config) . await . map_err ( |e| {
54+ // TODO(SEQ-515): refactor me to get the channel without starting the slotter already?
55+ // TODO(SEQ-515): slotter assumes that it starts first, or else it errors here
56+ let slot_rx = slotter. await . start ( ) ;
57+
58+ let block_builder = BlockBuilder :: new ( slot_rx, block_builder_config) . await . map_err ( |e| {
5659 RuntimeError :: Initialization ( format ! ( "Failed to create block builder: {}" , e) )
5760 } ) ?;
5861
59- let _ = block_builder. start ( ) . await ;
6062 info ! ( "Starting Metabased Translator" ) ;
63+ let sequencing_ingestor_handle = tokio:: spawn ( async move {
64+ if let Err ( e) = sequencing_ingestor. start_polling ( ) . await {
65+ error ! ( "Ingestor error: {}" , e) ;
66+ }
67+ } ) ;
6168
62- sequencer_ingestor. start_polling ( ) . await . map_err ( |e| {
63- error ! ( "Sequencer ingestor error: {}" , e) ;
64- RuntimeError :: TaskFailure ( e. to_string ( ) )
65- } ) ?;
66-
67- settlement_ingestor. start_polling ( ) . await . map_err ( |e| {
68- error ! ( "Settlement ingestor error: {}" , e) ;
69- RuntimeError :: TaskFailure ( e. to_string ( ) )
70- } ) ?;
69+ let settlement_ingestor_handle = tokio:: spawn ( async move {
70+ if let Err ( e) = settlement_ingestor. start_polling ( ) . await {
71+ error ! ( "Ingestor error: {}" , e) ;
72+ }
73+ } ) ;
7174
72- // TODO(SEQ-515): Improve this
73- // // Spawn ingestor task
74- // let ingestor_handle = tokio::spawn(async move {
75- // if let Err(e) = ingestor?.start_polling().await {
76- // error!("Ingestor error: {}", e);
77- // }
78- // });
79-
80- // TODO(SEQ-515): Improve this
81- // // Spawn block builder task
82- // let block_builder_handle = tokio::spawn(async move {
83- // if let Err(e) = block_builder.start().await {
84- // error!("Block builder error: {}", e);
85- // }
86- // });
75+ // TODO(SEQ-515): Block builder doesn't error
76+ let block_builder_handle = tokio:: spawn ( async move { block_builder. start ( ) . await } ) ;
8777
8878 // Main control loop
8979 tokio:: select! {
9080 // Wait for shutdown signal
9181 _ = & mut shutdown_rx => {
9282 info!( "Metabased Translator shutting down..." ) ;
9383 }
94-
95- // TODO(SEQ-515): Improve this
96- // // Watch for task completion/errors
97- // res = ingestor_handle => {
98- // if let Err(e) = res {
99- // error!("Ingestor task failed: {}", e);
100- // }
101- // }
102- // res = block_builder_handle => {
103- // if let Err(e) = res {
104- // error!("Block builder task failed: {}", e);
105- // }
106- // }
84+ // Watch for task completion/errors
85+ res = settlement_ingestor_handle => {
86+ if let Err ( e) = res {
87+ error!( "Settlement chain ingestor task failed: {}" , e) ;
88+ }
89+ }
90+ res = sequencing_ingestor_handle => {
91+ if let Err ( e) = res {
92+ error!( "Sequencing chain ingestor task failed: {}" , e) ;
93+ }
94+ }
95+ res = block_builder_handle => {
96+ if let Err ( e) = res {
97+ error!( "Block builder task failed: {}" , e) ;
98+ }
99+ }
107100 }
108101
109102 info ! ( "Metabased Translator shutdown complete" ) ;
0 commit comments