Skip to content

Commit 55d4456

Browse files
committed
feat: optimize metastore migration for reliability and scale
- Implement streaming for split processing to reduce memory usage. - Add resume capability by skipping existing indexes. - Add fault tolerance to continue migration on individual index failures. - Pin Rust version to 1.93 via rust-toolchain.toml.
1 parent 2041032 commit 55d4456

9 files changed

Lines changed: 219 additions & 132 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ test/results/
66

77
# Extra test doc generated at runtime
88
test/extra-docs.ndjson
9+
test/node-local.yaml
910

1011
# OS junk
1112
.DS_Store

Cargo.lock

Lines changed: 13 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,4 @@ tokio = { version = "1.48", features = ["full"] }
2323
tokio-metrics = { version = "0.4", features = ["rt"] }
2424
tracing = "0.1"
2525
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
26+
futures = "0.3.31"

rust-toolchain.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[toolchain]
2+
channel = "1.93"

src/main.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,21 @@ async fn main() -> anyhow::Result<()> {
8484
}
8585

8686
tracing::info!(
87-
indexes_migrated = report.indexes_migrated,
87+
indexes_succeeded = report.indexes_succeeded,
88+
indexes_failed = report.indexes_failed,
8889
total_splits = report.total_splits,
8990
total_delete_tasks = report.total_delete_tasks,
9091
"migration complete"
9192
);
9293

94+
if !report.index_failures.is_empty() {
95+
tracing::error!("failures detected:");
96+
for (idx, err) in &report.index_failures {
97+
tracing::error!(index_id = %idx, error = %err, "failed");
98+
}
99+
// Exit non-zero if there were failures
100+
std::process::exit(1);
101+
}
102+
93103
Ok(())
94104
}

0 commit comments

Comments
 (0)