Skip to content

Add thread-safe synchronization to startUpdatingOwnershipForShard#6426

Merged
graytaylor0 merged 1 commit intoopensearch-project:mainfrom
divbok:main
Jan 23, 2026
Merged

Add thread-safe synchronization to startUpdatingOwnershipForShard#6426
graytaylor0 merged 1 commit intoopensearch-project:mainfrom
divbok:main

Conversation

@divbok
Copy link
Contributor

@divbok divbok commented Jan 23, 2026

Description

Fixes a race condition in ShardAcknowledgementManager when shards repeatedly receive negative acks.

The Race Condition:

When a shard receives a negative ack, the ShardAcknowledgementManager removes it from checkpoints and gives up the partition. The StreamScheduler immediately re-acquires it and creates a new consumer. Without synchronization, the new consumer'sstartUpdatingOwnershipForShard() (adding the shard to checkpoints) can execute concurrently with the ShardAcknowledgementManager removePartitions() (removing the shard from checkpoints) causing the shard to go in an inconsistent/zombie state where it might lead to scenarios where the checkPointStatuses queue is empty for the shard

Check List

  • New functionality includes testing.
  • New functionality has a documentation issue. Please link to it in this PR.
    • New functionality has javadoc added
  • Commits are signed with a real name per the DCO

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@graytaylor0 graytaylor0 merged commit 69d1213 into opensearch-project:main Jan 23, 2026
50 of 52 checks passed
san81 pushed a commit to san81/data-prepper that referenced this pull request Jan 27, 2026
simonelbaz pushed a commit to simonelbaz/data-prepper that referenced this pull request Jan 31, 2026
simonelbaz pushed a commit to simonelbaz/data-prepper that referenced this pull request Jan 31, 2026
simonelbaz pushed a commit to simonelbaz/data-prepper that referenced this pull request Jan 31, 2026
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.

2 participants