compute: add regression guards for the MV sink write path - #38679
Draft
antiguru wants to merge 4 commits into
Draft
compute: add regression guards for the MV sink write path#38679antiguru wants to merge 4 commits into
antiguru wants to merge 4 commits into
Conversation
The MV sink has two dyncfg-gated alternative implementations, `enable_compute_correction_v2` for the correction buffer and `enable_compute_sync_mv_sink` for the operator structure. Nothing in CI guarded their performance: the criterion bench comparing the correction buffers never runs in CI, and no benchmark exercised the sync sink under a hydration backlog, where it starved CPU and, once that was fixed, exhausted memory. Add a deterministic unit test that drives `CorrectionV2` through the bench's hydration workloads (append, upsert, temporal filter) and counts structural work through the existing introspection logging hook instead of wall-clock time. Catching up through 4x more timestamps must cost at most 8x the work: linear scaling measures 4.0 to 4.2, quadratic would be 16. The workload generators move into a shared module so the bench and the test cannot drift apart. Add an `MvSink` feature benchmark family that stresses the write path end to end on wall-clock and replica memory: catch-up through many distinct timestamps after the view's cluster comes back online, retraction-heavy full-table rewrites, and small ingest rounds against a large far-future update mass behind a temporal filter. The nightly run compares against the merge base; the two flags can be A/B'd on one build with `--this-params` and `--other-params`. Move the `correction_v2` tests out of line, as they exceed the size limit for inline test modules. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GAf7V5GxLQRwhN8siyQtHn
antiguru
force-pushed
the
claude/materialize-regression-test-24sbk7
branch
from
September 5, 2026 14:34
37434e5 to
54606a3
Compare
Member
Author
|
Nightly build #18249 on
I can't read the Buildkite logs or re-run jobs from this session, so I can't name the flagged dependency or confirm the same steps are red on Generated by Claude Code |
Override the feature-benchmark workflow so THIS runs with a flag on and OTHER with it off on the same build, restricted to the MvSink family. The parallel jobs split by parity between enable_compute_sync_mv_sink and enable_compute_correction_v2. Revert before merging. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GAf7V5GxLQRwhN8siyQtHn
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GAf7V5GxLQRwhN8siyQtHn
Reverts the two TEMP commits that forced the feature-benchmark workflow into an MvSink flag A/B for nightly #18259. The tree is back to the PR's real content. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GAf7V5GxLQRwhN8siyQtHn
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.
The MV sink has two dyncfg-gated alternative implementations,
enable_compute_correction_v2for the correction buffer andenable_compute_sync_mv_sinkfor the operator structure. Nothing in CI guarded their performance: the criterion bench comparing the correction buffers never runs in CI, and no benchmark exercised the sync sink under a hydration backlog, where it starved CPU and, once that was fixed, exhausted memory.This adds two guards.
A deterministic unit test,
catch_up_work_is_linear, drivesCorrectionV2through the bench's hydration workloads (append, upsert, temporal filter) and counts structural work through the existing introspection logging hook instead of wall-clock time. Catching up through 4x more timestamps must cost at most 8x the work: linear scaling measures 4.0 to 4.2, quadratic would be 16. The workload generators move into a sharedcorrection_workloadmodule so the bench and the test cannot drift apart. Thecorrection_v2tests move out of line, as the module exceeds the inline size limit.An
MvSinkfeature benchmark family stresses the write path end to end on wall-clock and replica memory:MvSinkCatchUpreplays many distinct timestamps after the view's cluster comes back online,MvSinkRetractionsdrives full-table rewrites against a hydrated view, andMvSinkTemporalFilterruns small ingest rounds against a large far-future update mass. The nightly run compares against the merge base with identical flags, so it catches code regressions and flag flips. The two flags can be A/B'd on one build with--this-paramsand--other-params, as documented on the scenario family.The feature benchmark scenarios have not run against a real Materialize yet, so their scale constants may need tuning after the first nightly.
🤖 Generated with Claude Code
Generated by Claude Code