@@ -12,9 +12,9 @@ use sui_bridge_indexer_alt::metrics::BridgeIndexerMetrics;
1212use sui_bridge_schema:: MIGRATIONS ;
1313use sui_indexer_alt_framework:: ingestion:: { ClientArgs , ingestion_client:: IngestionClientArgs } ;
1414use sui_indexer_alt_framework:: postgres:: DbArgs ;
15+ use sui_indexer_alt_framework:: service:: Error ;
1516use sui_indexer_alt_framework:: { Indexer , IndexerArgs } ;
1617use sui_indexer_alt_metrics:: { MetricsArgs , MetricsService } ;
17- use tokio_util:: sync:: CancellationToken ;
1818use url:: Url ;
1919
2020#[ derive( Parser ) ]
@@ -49,18 +49,14 @@ async fn main() -> Result<(), anyhow::Error> {
4949 remote_store_url,
5050 } = Args :: parse ( ) ;
5151
52- let cancel = CancellationToken :: new ( ) ;
52+ let is_bounded_job = indexer_args . last_checkpoint . is_some ( ) ;
5353 let registry = Registry :: new_custom ( Some ( "bridge" . into ( ) ) , None )
5454 . context ( "Failed to create Prometheus registry." ) ?;
5555
5656 // Initialize bridge-specific metrics
5757 let bridge_metrics = BridgeIndexerMetrics :: new ( & registry) ;
5858
59- let metrics = MetricsService :: new (
60- MetricsArgs { metrics_address } ,
61- registry,
62- cancel. child_token ( ) ,
63- ) ;
59+ let metrics = MetricsService :: new ( MetricsArgs { metrics_address } , registry) ;
6460
6561 let metrics_prefix = None ;
6662 let mut indexer = Indexer :: new_from_pg (
@@ -78,7 +74,6 @@ async fn main() -> Result<(), anyhow::Error> {
7874 Some ( & MIGRATIONS ) ,
7975 metrics_prefix,
8076 metrics. registry ( ) ,
81- cancel. clone ( ) ,
8277 )
8378 . await ?;
8479
@@ -104,11 +99,23 @@ async fn main() -> Result<(), anyhow::Error> {
10499 . concurrent_pipeline ( ErrorTransactionHandler , Default :: default ( ) )
105100 . await ?;
106101
107- let h_indexer = indexer. run ( ) . await ?;
108- let h_metrics = metrics. run ( ) . await ?;
102+ let s_indexer = indexer. run ( ) . await ?;
103+ let s_metrics = metrics. run ( ) . await ?;
109104
110- let _ = h_indexer. await ;
111- cancel. cancel ( ) ;
112- let _ = h_metrics. await ;
113- Ok ( ( ) )
105+ match s_indexer. attach ( s_metrics) . main ( ) . await {
106+ Ok ( ( ) ) => Ok ( ( ) ) ,
107+ Err ( Error :: Terminated ) => {
108+ if is_bounded_job {
109+ std:: process:: exit ( 1 ) ;
110+ } else {
111+ Ok ( ( ) )
112+ }
113+ }
114+ Err ( Error :: Aborted ) => {
115+ std:: process:: exit ( 1 ) ;
116+ }
117+ Err ( Error :: Task ( _) ) => {
118+ std:: process:: exit ( 2 ) ;
119+ }
120+ }
114121}
0 commit comments