Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

addUsedFilesForQuery,为其加上tsFileLock的读锁

调用StorageEngine.mergeUnlock,释放第一步中获得的所有StorageGroupProcessor的insertLock和compactionMergeLock

在查询处理期间,持有所有文件的tsFileLock的读锁,直到查询结束,释放tsFileLock的读锁。

写入获取和释放锁的流程


写入获取锁的流程较为简单,在StorageGroupProcessor中,每一个insert接口都会直接获取该SGP的insert lock的写锁,直至写入完成,返回StorageEngine后再释放写锁,具体写入接口如下:

public void insert(InsertRowPlan insertRowPlan)

public void insert(InsertRowsOfOneDevicePlan insertRowsOfOneDevicePlan)

public void insertTablet(InsertTabletPlan insertTabletPlan)

另外一个获取锁的地方是flush,当内存控制需要将某个tsfile刷入磁盘时,会先拿tsFileLock的写锁,再进行刷盘,具体刷盘接口如下:

public void asyncFlush()

public void asyncClose() {