Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
0.12.3
-
None
-
2021-12-Dragon
Description
TTL is responsible for deleting expired TsFiles. Before deleting, TTL takes the write lock of SGP and the write lock of the file, and then deletes the file. When the compaction task starts, the read locks of source files are acquired. But the acquiring process is not atomic, and because TTL does not check for the file's merging state before deleting it, it is possible for the TTL to delete the source files of a running compaction task who has not acquired all the read locks of all source files yet.