-
Notifications
You must be signed in to change notification settings - Fork 2k
[ENH] wal3 replicated interfaces #6102
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: rescrv/fragment-reader
Are you sure you want to change the base?
Conversation
Reviewer ChecklistPlease leverage this checklist to ensure your code review is thorough before approving Testing, Bugs, Errors, Logs, Documentation
System Compatibility
Quality
|
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
288e76f to
41a0d76
Compare
Relocate the spanner-migrations crate from rust/rust-sysdb/spanner-migrations/ to rust/spanner-migrations/ to align with the flat structure of other crates in the rust workspace. Update workspace members in Cargo.toml accordingly. Co-authored-by: AI
…ation directories Improve the spanner-migrations tool with proper CLI argument parsing and support for managing migrations in multiple directories: - Add clap for structured CLI with subcommands (generate-sum, apply, validate) - Support --slug flag to filter migrations by directory (e.g., spanner_sysdb, spanner_logdb) - Support --root flag for specifying output directory when generating manifests - Add SpannerLogDb migration directory alongside existing SpannerSysDb - Rename as_str() to migration_slug() for clarity - Add manifest_filename() and folder_name() helper methods to MigrationDir - Update error messages to reference the correct manifest filename - Fix default config path to reference ../worker/chroma_config2.yaml Co-authored-by: AI
Implement a quorum-based coordination mechanism that: - Runs futures in parallel and waits for a minimum count of Ok results - Starts a timeout after reaching the quorum threshold - Cancels remaining futures that exceed the timeout - Returns results in original order with None for cancelled futures This enables handling partial quorum failures where some writers may be slow or unresponsive, allowing the system to proceed once a quorum of successful writes is achieved while still attempting to maximize replication within a bounded time window. Co-authored-by: AI
41a0d76 to
beb1a12
Compare
Move fragment reading methods (read_raw_bytes, read_parquet, read_fragment) into the FragmentConsumer trait, eliminating the need for LogReader to hold a Storage reference. This improves encapsulation and simplifies the LogReader interface. - Rename FragmentPuller to S3FragmentPuller for naming consistency - Add read_raw_bytes, read_parquet, read_fragment to FragmentConsumer trait - Move checksum_parquet utility from reader.rs to interfaces/mod.rs - Remove storage parameter from LogReader::new and LogReader::open - Remove unused _writer_name parameters from make_log_reader helpers Co-authored-by: AI
beb1a12 to
c60d0b8
Compare
dfc7a69 to
ff4b7ea
Compare
|
Found 3 test failures on Blacksmith runners: Failures
|
8174102 to
6758bfc
Compare
|
Introduce Spanner-backed replicated WAL interface and refactor WAL3 infrastructure This PR delivers a new replicated WAL3 implementation that stores manifests in Google Cloud Spanner and replicates fragments across multi-region object storage via a quorum-based writer. It reworks the WAL3 I/O pipeline, manifest management, and garbage-collection bookkeeping to accommodate the replicated design while keeping S3-based flows functional. Service integrations, configuration tooling, and Spanner migrations are updated to surface the new interfaces, default replication options, and multi-directory migration workflows. Key Changes• Implemented Affected Areas• rust/wal3 interfaces (S3 and new replicated implementations) This summary was automatically generated by @propel-code-bot |
Description of changes
This PR introduces the wal3 replicated interface that works atop spanner.
Test plan
CI + additional testing
Migration plan
N/A
Observability plan
N/A
Documentation Changes
N/A