Pewarta Proxy

📋 Server Request & Proxy Logs

Loading active proxy settings...
Developed by Khairul Adha (adhexa.id)
Mengambil log server...

⚙️ Pengaturan Proxy Target

Skip to content

[connectors] Release the Delta reader permit while paused - #7749

Queued
swanandx wants to merge 1 commit into
mainfrom
issue7746
Queued

swanandx wants to merge 1 commit into
mainfrom
issue7746

Conversation

@swanandx

Copy link
Copy Markdown
Member

Linked Issue

Closes #7746

Describe Manual Test Plan

A paused Delta reader now gives up its reader permit until it resumes, so a connector that has voted to commit can no longer block one that has not. The repro from the issue now runs in catchup and always mode; both fail without the fix and pass with it.

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

None.

@swanandx
swanandx requested a review from ryzhyk October 30, 2026 18:14
@swanandx
swanandx enabled auto-merge October 30, 2026 18:44
@mythical-fred-oss

Copy link
Copy Markdown
Contributor

LGTM. The fix is narrow and correct. A paused reader now releases its DELTA_READER_SEMAPHORE permit while it waits in wait_running and acquires one again when it resumes. execute_df_inner is the only place that acquires the permit, so no other path can deadlock this way.

What I ran Result
cargo test -p static-connectors --test connector_suites paused_reader_holds_permit, debug build, 5 runs ✅ 2/2 every run
The same, with all 80 cores busy, 3 runs ✅ 2/2 every run (~43 s)
The same, release build (as CI runs it), 8 runs ✅ 2/2 every run (~4.6 s)
The same, with the input.rs change reverted ❌ both fail: "transaction did not commit within 60000 ms"
connector_suites integrated::delta_table::, release build ✅ 181 passed, 1 ignored
pre-commit run --files <changed files> ✅

Gates: the PR adds an integration test that fails without the fix. The test showed no flakiness in debug, release or loaded runs. It also has a guard (light_last < light_target) that names the cause if the deadlock setup ever fails to happen. The commit message is good. Nothing is user-visible, so no docs are needed.

A paused Delta reader kept its reader permit. A connector that voted
to commit is not drained, so it stays paused, and a connector that
still needs a permit waits forever. Both catchup and always modes hang.

Co-authored-by: Anand Raman <anand.raman@feldera.com>
Signed-off-by: Swanand Mulay <73115739+swanandx@users.noreply.github.com>
@swanandx
swanandx disabled auto-merge October 30, 2026 19:08
@swanandx
swanandx added this pull request to the merge queue Oct 30, 2026
Any commits made after this event will not be merged.

This branch has not been deployed

No deployments
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.

[connectors] Delta catch-up transaction deadlocks when paused readers hold reader permits

2 participants