-
Couldn't load subscription status.
- Fork 9.1k
HADOOP-19712 S3A: Deadlock in EvaluatingStatisticsMap.entryset() #8006
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
HADOOP-19712 S3A: Deadlock in EvaluatingStatisticsMap.entryset() #8006
Conversation
|
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.
|
build failures are in the yarn-ui; it complains that node is too old |
|
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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM +1
) 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
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?