servlet: fix threadingTest and update lincheck #12306
Open
+43
−41
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.
Seems like previously it was not testing all the flows but only: the write/flush calls are added to the queue by
runOrBuffer
becausereadyAndDrained
is initiallyfalse
.So,
isReady()
is never calledisReadyReturnedFalse
never set to truemaybeOnWritePossible()
does nothingAll that makes me think that #9917 is caused by some bugs in older versions of llincheck, can be closed now.
A more real simulation happens if calling
onWritePossible
first viainitialOnWritePossible
, and then it has found a race condition inAsyncServletOutputStreamWriterConcurrencyTest.isReady()
, ifmaybeOnWritePossible()
is executed beforereturn isReady
.Additionally updated lincheck,
com.google.common.truth.Subject.equals(Object)
It still does not detect #12268, but might be needs more time.