Skip to content

Fix deadlock when fetching next chunk (1.3)#266

Merged
staticlibs merged 1 commit intoduckdb:v1.3-ossivalisfrom
staticlibs:rs_fetch_lock_order_13
Jun 15, 2025
Merged

Fix deadlock when fetching next chunk (1.3)#266
staticlibs merged 1 commit intoduckdb:v1.3-ossivalisfrom
staticlibs:rs_fetch_lock_order_13

Conversation

@staticlibs
Copy link
Collaborator

This is a backport of the PR #242 to v1.3-ossivalis stable branch.

When connection is being closed, it closes all statements and all result sets on these statements. All this is done while holding connection lock.

When fetching next chunk, result set needs to take both result set and connection locks. Because of the wrong order of taking these locks, concurrent close() call on result set, initiated from Connection#close() was causing a deadlock.

This change reorders locks in ResultSet#fetchChunk() to fix this.

Testing: new test added that reproduces the deadlock reliably (may need to raise the number of iterations).

Fixes: #241

This is a backport of the PR duckdb#242 to `v1.3-ossivalis` stable branch.

When connection is being closed, it closes all statements and all result
sets on these statements. All this is done while holding connection
lock.

When fetching next chunk, result set needs to take both result set and
connection locks. Because of the wrong order of taking these locks,
concurrent `close()` call on result set, initiated from
`Connection#close()` was causing a deadlock.

This change reorders locks in `ResultSet#fetchChunk()` to fix this.

Testing: new test added that reproduces the deadlock reliably (may need
to raise the number of iterations).

Fixes: duckdb#241
@staticlibs staticlibs merged commit 3702a9e into duckdb:v1.3-ossivalis Jun 15, 2025
@staticlibs staticlibs deleted the rs_fetch_lock_order_13 branch June 15, 2025 23:35
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