Skip to content

[adapters] delta: don't open a catchup window while the endpoint is paused - #6871

Open
ryzhyk wants to merge 1 commit into
mainfrom
fix-delta-catchup-window-pause
Open

[adapters] delta: don't open a catchup window while the endpoint is paused#6871
ryzhyk wants to merge 1 commit into
mainfrom
fix-delta-catchup-window-pause

Conversation

@ryzhyk

@ryzhyk ryzhyk commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Catchup mode batches every Delta commit up to the table's latest version into one Feldera transaction. It picks that version when it opens the window, and the follow loop could open one with a pause already pending: the loop waits for Running at the top of each iteration, then reads a log entry and opens the window further down, and the endpoint can pause in between. The window then targets a version from before the pause, so the commits written during the pause -- the backlog catchup mode exists to batch -- are split across later windows.

Wait for Running again before choosing the target. The window then spans everything the table has accumulated by the time the connector resumes.

This is the flake behind delta_table_snapshot_and_follow_catchup_snapshot_transaction_test failing with catchup_target_version one version short of the burst: the test builds its backlog while paused, so it depends on this window never opening early. The new test parks the follow loop between the two points with a read failure and reproduces it deterministically; the shared experiment now also asserts that no window survives a pause.

Describe Manual Test Plan

Checklist

  • Unit tests added/updated
  • Integration tests added/updated
  • Documentation updated
  • Changelog updated

Breaking Changes?

Mark if you think the answer is yes for any of these components:

Describe Incompatible Changes

…aused

Catchup mode batches every Delta commit up to the table's latest version into
one Feldera transaction. It picks that version when it opens the window, and the
follow loop could open one with a pause already pending: the loop waits for
`Running` at the top of each iteration, then reads a log entry and opens the
window further down, and the endpoint can pause in between. The window then
targets a version from before the pause, so the commits written during the pause
-- the backlog catchup mode exists to batch -- are split across later windows.

Wait for `Running` again before choosing the target. The window then spans
everything the table has accumulated by the time the connector resumes.

This is the flake behind `delta_table_snapshot_and_follow_catchup_snapshot_transaction_test`
failing with `catchup_target_version` one version short of the burst: the
test builds its backlog while paused, so it depends on this window never opening
early. The new test parks the follow loop between the two points with a read
failure and reproduces it deterministically; the shared experiment now also
asserts that no window survives a pause.

Signed-off-by: Leonid Ryzhyk <ryzhyk@gmail.com>
@ryzhyk
ryzhyk requested a review from swanandx August 16, 2026 06:14
@ryzhyk ryzhyk added the connectors Issues related to the adapters/connectors crate label Aug 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

connectors Issues related to the adapters/connectors crate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant