Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
Description
There is a deadlock issue which can be triggered by the FLUSH command in the following condition:
1. The main thread constructs sub-threads of closing tsfiles.
2. The last sub-thread is near its end and removes itself from ''closingSequenceTsFileProcessors''. Then the main thread breaks the while loop, holds ''closeStroageGroupCondition'', and uses ''future.get'' to wait for the sub-thread.
3. Unfortunately, since the main thread holds the condition, the sub-thread cannot hold it and gets stuck. The main thread is also blocked by the sub-thread through "future.get", so there is a deadlock.
The solution is simple: there is no need for the main thread to wait for the sub-threads while holding the condition, and the waiting can be done outside of the synchronization block.
Attachments
Attachments
Issue Links
- links to