HADOOP-19712 S3A: Deadlock in EvaluatingStatisticsMap.entryset()#8006
Merged
steveloughran merged 4 commits intoapache:trunkfrom Oct 16, 2025
Merged
Conversation
Contributor
Author
|
tested s3 london args |
|
💔 -1 overall
This message was automatically generated. |
Reworked how entrySet() and values() work, using .forEach() iterators after reviewing what ConcurrentHashMap does internally; it does a (safe) traverse. Add EvaluatingStatisticsMap.forEach() implementation which maps the passed in BiConsumer down to the evaluators.forEach, evaluating each value as it goes. Use that in IOStatisticsBinding.snapshot() code. Tests for all this.
40e7c25 to
bfb91e8
Compare
Add a test with a larger set of entries (env vars) and more assertions. Due diligence.
Contributor
Author
|
build failures are in the yarn-ui; it complains that node is too old |
Contributor
Author
|
I see yarn-ui failure is already covered in a yarn jira. |
|
💔 -1 overall
This message was automatically generated. |
|
💔 -1 overall
This message was automatically generated. |
|
💔 -1 overall
This message was automatically generated. |
steveloughran
added a commit
that referenced
this pull request
Oct 16, 2025
) EvaluatingStatisticsMap used parallelStream() to process values; this uses a fixed thread pool of the JRE and can sporadically deadlock if there's not enough capacity and the direct/indirect map operations take place in a worker thread of its own. * Reworked how entrySet() and values() work, using .forEach() iterators after reviewing what ConcurrentHashMap does internally; it does a (safe) traverse. * Added EvaluatingStatisticsMap.forEach() implementation which maps the passed in BiConsumer down to the evaluators.forEach, evaluating each value as it goes. * Use that in IOStatisticsBinding.snapshot() code. Contributed by Steve Loughran
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Reworked how entrySet() and values() work, using .forEach() iterators after reviewing what ConcurrentHashMap does internally; it does a (safe) traverse.
Add EvaluatingStatisticsMap.forEach() implementation which maps the passed in BiConsumer down to the evaluators.forEach, evaluating each value as it goes.
Use that in IOStatisticsBinding.snapshot() code.
Tests for all this.
For code changes:
LICENSE,LICENSE-binary,NOTICE-binaryfiles?