diff --git a/src/index/updater.rs b/src/index/updater.rs index 87ebe58ab3..509a73dc2c 100644 --- a/src/index/updater.rs +++ b/src/index/updater.rs @@ -98,7 +98,7 @@ impl<'index> Updater<'index> { uncommitted += 1; - if uncommitted == 5000 { + if uncommitted == self.index.settings.commit_interval { self.commit(wtx, value_cache)?; value_cache = HashMap::new(); uncommitted = 0; diff --git a/src/options.rs b/src/options.rs index c892a0715c..0c40e758a4 100644 --- a/src/options.rs +++ b/src/options.rs @@ -30,6 +30,12 @@ pub struct Options { help = "Set index cache to bytes. By default takes 1/4 of available RAM." )] pub(crate) db_cache_size: Option, + #[arg( + long, + default_value = "5000", + help = "Commit to index every blocks." + )] + pub(crate) commit_interval: usize, #[arg( long, help = "Don't look for inscriptions below ." diff --git a/src/settings.rs b/src/settings.rs index b7a8a31963..9b4a55da8c 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -10,6 +10,7 @@ pub struct Settings { pub(crate) credentials: Option<(String, String)>, pub(crate) data_dir: PathBuf, pub(crate) db_cache_size: Option, + pub(crate) commit_interval: usize, pub(crate) first_inscription_height: Option, pub(crate) height_limit: Option, pub(crate) hidden: HashSet, @@ -86,6 +87,7 @@ impl Settings { credentials: options.username.zip(options.password), data_dir: options.data_dir, db_cache_size: options.db_cache_size, + commit_interval: options.commit_interval, first_inscription_height: options.first_inscription_height, height_limit: options.height_limit, hidden: config.hidden.unwrap_or_default(), @@ -851,6 +853,13 @@ mod tests { assert_eq!(arguments.options.db_cache_size, Some(16000000000)); } + #[test] + fn setting_commit_interval() { + let arguments = + Arguments::try_parse_from(["ord", "--commit-interval", "500", "index", "update"]).unwrap(); + assert_eq!(arguments.options.commit_interval, 500); + } + #[test] fn index_runes_only_returns_true_if_index_runes_flag_is_passed_and_not_on_mainnnet() { assert!(Arguments::try_parse_from([