HBASE-30317 Fix synchronization race in TestExecutorService - #8531
Open
Sigma-Ma wants to merge 1 commit into
Open
HBASE-30317 Fix synchronization race in TestExecutorService#8531Sigma-Ma wants to merge 1 commit into
Sigma-Ma wants to merge 1 commit into
Conversation
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.
JIRA: https://issues.apache.org/jira/browse/HBASE-30317
What changes were proposed in this pull request?
Update
TestExecutorService.testExecutorServiceto poll freshExecutorStatussnapshots withWaiter.waitForuntil the status dump shows a handler waiting on theAtomicBooleanmonitor.The existing dump check now returns a boolean used as the wait predicate. No fixed sleep is introduced.
Why are the changes needed?
The test previously waited only for the shared counter to reach five. However, each handler increments the counter before performing its initial logging and entering
lock.wait().Therefore,
counter == 5proves only that all handlers have started. Under resource pressure, the status dump can be captured while all handlers are still RUNNABLE inStringConcatFactory.makeConcatWithConstants, causing the expected waiting-state assertion to fail.Waiting for the expected state in the actual executor status dump removes this synchronization race.
How was this patch tested?
mvn \ -pl hbase-server -am \ -Dtest=org.apache.hadoop.hbase.executor.TestExecutorService \ -Dsurefire.failIfNoSpecifiedTests=false \ testThe resulting executor status dump showed all five handlers in the
WAITINGstate on theAtomicBooleanmonitor.