Skip to content

storage: seed load generator offset_committed per export - #39781

Closed
peterdukelarsen wants to merge 1 commit into
MaterializeInc:mainfrom
peterdukelarsen:plarsen/offset-committed-seed-load-generator
Closed

peterdukelarsen wants to merge 1 commit into
MaterializeInc:mainfrom
peterdukelarsen:plarsen/offset-committed-seed-load-generator

Conversation

@peterdukelarsen

@peterdukelarsen peterdukelarsen commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Motivation

The load generator seeded every export's offset_committed with 0 whenever the generator resumed from offset 0, which is the case as soon as one export has never committed, for example a table just added to the source. Every other export then reported 0 until its first committed upper arrived, below the value it had reported before, which worker 0 logs as total gauge offset_committed erroneously regressed.

Part of: SS-436

Changes

Each export is seeded from its own resume upper instead, the same way the PostgreSQL and SQL Server sources do after #39780. An export that has never committed still starts at 0, and the generator still replays from the least resume upper.

Tests

None demonstrate this change. A cluster workflow that adds a table to an auction source with a 100ms and then a 1ms tick never logged a regression before the change: the reclocked committed uppers reach the operator before its first report, so the 0 seed was overwritten in time in every run. This is a consistency change that closes the window by construction rather than a fix for an observed occurrence. The occurrence attached to SS-436 was a PostgreSQL source, which #39780 addresses.

Checklist

  • This PR has adequate test coverage / QA involvement has been duly considered. (trigger-ci for additional test/nightly runs)
  • This PR has an associated up-to-date design doc, is a design doc (template), or is sufficiently small to not require a design.
  • If this PR evolves an existing $T ⇔ Proto$T mapping (possibly in a backwards-incompatible way), then it is tagged with a T-proto label.
  • If this PR will require changes to cloud orchestration or tests, there is a companion cloud PR to account for those changes that is tagged with the release-blocker label.
  • If this PR includes major user-facing behavior changes, I have pinged the relevant PM to schedule a changelog post.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FTqJbQjM1u9PHMcwj3jRcR

The load generator seeded every export's `offset_committed` with 0 whenever
the generator resumed from offset 0, which is the case as soon as one
export has never committed, for example a table just added to the source.
Every other export then reported 0 until the first committed upper for it
arrived, below the value it had reported before, which worker 0 logs as
`total gauge offset_committed erroneously regressed`.

Seed each export from its own resume upper instead, the same way the
PostgreSQL and SQL Server sources do. An export that has never committed
still starts at 0, and the generator still replays from the least resume
upper. The window in which the 0 seed was reported closes before the first
report in practice, since the reclocked committed uppers reach the operator
first, so this is a consistency change with no test that demonstrates it.

Part of: SS-436

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FTqJbQjM1u9PHMcwj3jRcR
@peterdukelarsen
peterdukelarsen requested a review from a team as a code owner October 13, 2026 15:41
@peterdukelarsen

Copy link
Copy Markdown
Contributor Author

Didn't reproduce the issue. Spurious fix from Claude

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant