Bug: Bound durable startup benchmark batches - #166
Open
smiggleworth wants to merge 1 commit into
Open
Conversation
5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Type
Bug
Linked issue
Fixes #165
Summary
Write benchmark documents in bounded 10,000-row storage batches during unmeasured fixture setup so representative durable fixtures remain recoverable under Midge's WAL decompression limit.
User/operator impact
The 100k startup benchmark can shut down and reopen its durable fixture instead of aborting canonical evidence with an oversized WAL record.
Current and expected behavior
Canonical run 32521755392 submitted all 100k documents in one
put_documentscall. On reopen, WAL recovery rejected a legitimate 81,283,353-byte LZ4 output against the 67,108,864-byte limit. Fixture setup now uses multiple existing atomic calls; measured reopen behavior and product-side Midge API/atomicity remain unchanged.Scope
One benchmark fixture helper and one focused source contract. No runtime source, storage format, public API, query behavior, threshold, or validator changes. The touched legacy fixture file remains below the 1,000-line limit at 990 lines.
Evidence and support status
Red:
startup_reopen/100kat WAL recovery.should_bound_durable_benchmark_document_write_batchesfailed on current main because no bound or batched loop existed.Green:
Validation
cargo build --locked --bin cassiepassed.RUST_TEST_THREADS=1 cargo test --lockedpassed.cargo clippy --workspace --all-targets --all-features -- -D warnings -D clippy::pedanticpassed.cargo fmt --all -- --checkpassed.cntryl-tools validate-tests -f tests/benchmark_startup_recovery_contract.rspassed (1/1).cargo bench --locked --bench tier3_system_startup -- --workload startup_reopen --profile smoke --samples 1 --warmup-samples 0passed against the native-disk profile.Acceptance criteria
Status
Ready for review at exact head
a706e34616a71666f23aee003805efac1a95985e. Benchmark-fixture setup only; no product runtime behavior change.