Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Abandoned
-
None
-
None
-
None
Description
1. DrainBarrier.stopAndDrainOps may wait forever if DrainBarrier.endOp changes its state and calls Object.notifyAll just before stopAndDrainOps enters the synchronized block to call Object.wait. Moreover, Object.wait may wake up false-positively, and stopAndDrainOps may break the block before outstanding operations are complete.
2. Some tests for DrainBarrier catch and ignore AssertionError explicitly thrown JUnit's fail method.
The implementation of DrainBarrier is a little complex, and I'll fix and refactor it.