...
public void asyncClose()
合并获取和释放锁的流程
合并对锁的获取主要分为两部分:
外部获取及修改TsFileResource列表:
都是针对于compactionMergeLock的锁
所有对TsFileResource的List的读操作(如查询时获得满足此次查询条件的所有TsFileResource)需要获得其读锁
所有对TsFileResource的List的写操作(比如写入时,创建新的TsFileResource)需要获得其写锁
即,对于每一个文件列表相关操作,其锁的获取和释放格式为
...
compactionMergeLock.readLock()/compactionMergeLock.writeLock();
// 对列表读取或更改操作
compactionMergeLock.readUnlock()/compactionMergeLock.writeUnlock();
...
合并完对文件列表和实际文件进行删除和新增:
1、获取compactionMergeLock的写锁
2、然后进行文件列表的旧文件删除和新文件的增加
3、compactionMergeLock的写锁
4、循环要删除的每一个TsFile文件,对于每一个TsFile文件进行如下操作:
1、获取TsFileResource的tsFileLock写锁
2、删除文件
3、释放TsFileResource的tsFileLock写锁