Skip to content

Synchronization fix for aggregate processor and aggregate event handles on groups#6431

Merged
graytaylor0 merged 1 commit into
opensearch-project:mainfrom
dlvenable:aggregate-attach-sync
Jan 26, 2026
Merged

Synchronization fix for aggregate processor and aggregate event handles on groups#6431
graytaylor0 merged 1 commit into
opensearch-project:mainfrom
dlvenable:aggregate-attach-sync

Conversation

@dlvenable
Copy link
Copy Markdown
Member

@dlvenable dlvenable commented Jan 26, 2026

Description

There is a possible synchronization issue in the aggregate processor. It currently calls attachToEventAcknowledgementSet on the aggregate group outside of any locks.

Possible scenario in time order:

  1. Threat 1 gets an AggregateGroup from the map. The get from the map is synchronized, but not necessarily what happens afterward.
  2. Thread 1 begins using the aggregate event from this thread
  3. Thread 2 closes and resets the AggregateGroup. This creates a new aggregate event handle for the group going forward.
  4. Thread 1 finishes attachment for the aggregate event it had from step 2. But, this is not the one that the group will use later.

The end result is that we may have two aggregate events for one group. Both are holding the acknowledgement set, but only one will leave the aggregate processor.

The solution is to attach the event within the locks.

Issues Resolved

N/A

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.

…es when attaching events to the aggregate group.

There is a possible synchronization issue in the aggregate processor. It currently calls attachToEventAcknowledgementSet on the aggregate group outside of any locks. It is possible that one thread gets this group. Then thread two gets the closes the group. If thread 1 then attaches the event to that group, thread 2 may still reset it. The solution is to move attachToEventAcknowledgementSet into the locks.

Signed-off-by: David Venable <dlv@amazon.com>
@graytaylor0 graytaylor0 merged commit c02bf25 into opensearch-project:main Jan 26, 2026
50 of 52 checks passed
san81 pushed a commit to san81/data-prepper that referenced this pull request Jan 27, 2026
…es when attaching events to the aggregate group. (opensearch-project#6431)

There is a possible synchronization issue in the aggregate processor. It currently calls attachToEventAcknowledgementSet on the aggregate group outside of any locks. It is possible that one thread gets this group. Then thread two gets the closes the group. If thread 1 then attaches the event to that group, thread 2 may still reset it. The solution is to move attachToEventAcknowledgementSet into the locks.

Signed-off-by: David Venable <dlv@amazon.com>
@dlvenable dlvenable deleted the aggregate-attach-sync branch January 28, 2026 19:06
simonelbaz pushed a commit to simonelbaz/data-prepper that referenced this pull request Jan 31, 2026
…es when attaching events to the aggregate group. (opensearch-project#6431)

There is a possible synchronization issue in the aggregate processor. It currently calls attachToEventAcknowledgementSet on the aggregate group outside of any locks. It is possible that one thread gets this group. Then thread two gets the closes the group. If thread 1 then attaches the event to that group, thread 2 may still reset it. The solution is to move attachToEventAcknowledgementSet into the locks.

Signed-off-by: David Venable <dlv@amazon.com>
Signed-off-by: Simon ELBAZ <elbazsimon9@gmail.com>
simonelbaz pushed a commit to simonelbaz/data-prepper that referenced this pull request Jan 31, 2026
…es when attaching events to the aggregate group. (opensearch-project#6431)

There is a possible synchronization issue in the aggregate processor. It currently calls attachToEventAcknowledgementSet on the aggregate group outside of any locks. It is possible that one thread gets this group. Then thread two gets the closes the group. If thread 1 then attaches the event to that group, thread 2 may still reset it. The solution is to move attachToEventAcknowledgementSet into the locks.

Signed-off-by: David Venable <dlv@amazon.com>
simonelbaz pushed a commit to simonelbaz/data-prepper that referenced this pull request Jan 31, 2026
…es when attaching events to the aggregate group. (opensearch-project#6431)

There is a possible synchronization issue in the aggregate processor. It currently calls attachToEventAcknowledgementSet on the aggregate group outside of any locks. It is possible that one thread gets this group. Then thread two gets the closes the group. If thread 1 then attaches the event to that group, thread 2 may still reset it. The solution is to move attachToEventAcknowledgementSet into the locks.

Signed-off-by: David Venable <dlv@amazon.com>
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.

3 participants