From 5585c7ea45e365da662bea05333406af9fae452b Mon Sep 17 00:00:00 2001 From: patrick Date: Mon, 6 Jan 2025 11:55:26 +0000 Subject: [PATCH] add genesis checkpoint to indexer args, this will be used as the default checkpoint. --- crates/sui-indexer-alt-framework/src/lib.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/crates/sui-indexer-alt-framework/src/lib.rs b/crates/sui-indexer-alt-framework/src/lib.rs index e19af30cf6446b..18db2d30c5e06a 100644 --- a/crates/sui-indexer-alt-framework/src/lib.rs +++ b/crates/sui-indexer-alt-framework/src/lib.rs @@ -58,6 +58,11 @@ pub struct IndexerArgs { /// Address to serve Prometheus Metrics from. #[arg(long, default_value_t = Self::default().metrics_address)] pub metrics_address: SocketAddr, + + /// The genesis checkpoint to start ingestion from, this is useful for app indexer which only + /// needs to index checkpoint after the app contract's genesis. + #[arg(long, default_value_t = 0)] + pub genesis_checkpoint: u64, } pub struct Indexer { @@ -101,6 +106,9 @@ pub struct Indexer { /// The handles for every task spawned by this indexer, used to manage graceful shutdown. handles: Vec>, + + /// Default checkpoint lowerbound. + genesis_checkpoint: u64, } impl Indexer { @@ -133,6 +141,7 @@ impl Indexer { pipeline, skip_watermark, metrics_address, + genesis_checkpoint, } = indexer_args; let db = Db::new(db_args) @@ -171,6 +180,7 @@ impl Indexer { cancel, first_checkpoint_from_watermark: u64::MAX, handles: vec![], + genesis_checkpoint, }) } @@ -392,7 +402,9 @@ impl Indexer { // TODO(amnn): Test this (depends on supporting migrations and tempdb). self.first_checkpoint_from_watermark = watermark .as_ref() - .map_or(0, |w| w.checkpoint_hi_inclusive as u64 + 1) + .map_or(self.genesis_checkpoint, |w| { + w.checkpoint_hi_inclusive as u64 + 1 + }) .min(self.first_checkpoint_from_watermark); Ok(Some(watermark)) @@ -407,6 +419,7 @@ impl Default for IndexerArgs { pipeline: vec![], skip_watermark: false, metrics_address: "0.0.0.0:9184".parse().unwrap(), + genesis_checkpoint: 0, } } }