Skip to content

Fix inner hits + aggregations concurrency bug #128036

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 21 commits into
base: main
Choose a base branch
from

Conversation

benchaplin
Copy link
Contributor

Resolves #122419.

There's a concurrency bug that occurs when doing aggregations on inner hits. It can result in one of three exceptions:

  • java.lang.IllegalStateException: Error retrieving path
  • java.lang.NullPointerException: Cannot invoke "java.util.Map.get(Object)" because "this.preloadedStoredFieldValues" is null
  • java.lang.AssertionError: invalid decRef call: already closed

The underlying issue is that InnerHitSubContext is not thread safe, yet instances are shared across leaf slice search threads during an aggregation. Specifically, the race condition occurs when InnerHitSubContext.rootId & InnerHitSubContext.rootSource fields are set and accessed concurrently by multiple threads.

The tests I've added to TopHitsIT reproduce the issue. If you paste those tests into main and run them a few times you should see one of the exceptions.

I've solved this by forking the InnerHitSubContext instances, similar to what was done here #106990. SearchExecutionContext is at times accessed from InnerHitSubContext, so I also had to make sure the forked SearchExecutionContext was used in those cases.

@benchaplin benchaplin requested a review from javanna May 12, 2025 19:52
@benchaplin benchaplin added >bug Team:Search Foundations Meta label for the Search Foundations team in Elasticsearch :Search Foundations/Search Catch all for Search Foundations v8.19.0 v9.1.0 labels May 12, 2025
@elasticsearchmachine
Copy link
Collaborator

Pinging @elastic/es-search-foundations (Team:Search Foundations)

@elasticsearchmachine
Copy link
Collaborator

Hi @benchaplin, I've created a changelog YAML for you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
>bug :Search Foundations/Search Catch all for Search Foundations Team:Search Foundations Meta label for the Search Foundations team in Elasticsearch v8.19.0 v9.1.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

IllegalStateException during search: "Error retrieving path ..."
3 participants