This is an automated email from the ASF dual-hosted git repository. jackietien pushed a commit to branch CompactionQueryLock012 in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 77c74d90be2fcde0618d9c83b055440a2380c59d Author: JackieTien97 <[email protected]> AuthorDate: Mon Jun 7 12:01:09 2021 +0800 Fix compaction lock with query --- .../java/org/apache/iotdb/db/engine/compaction/TsFileManagement.java | 4 ++-- .../apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/TsFileManagement.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/TsFileManagement.java index 4ae9f1f..8dc2e16 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/TsFileManagement.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/TsFileManagement.java @@ -135,11 +135,11 @@ public abstract class TsFileManagement { /** fork current TsFile list (call this before merge) */ public abstract void forkCurrentFileList(long timePartition) throws IOException; - protected void readLock() { + public void readLock() { compactionMergeLock.readLock().lock(); } - protected void readUnLock() { + public void readUnLock() { compactionMergeLock.readLock().unlock(); } diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java index 8beca06..b2d4b60 100755 --- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java @@ -1587,10 +1587,14 @@ public class StorageGroupProcessor { } public void readLock() { + // apply read lock for SG insert lock to prevent inconsistent with concurrently writing memtable insertLock.readLock().lock(); + // apply read lock for TsFileResource list + tsFileManagement.readLock(); } public void readUnlock() { + tsFileManagement.readUnLock(); insertLock.readLock().unlock(); }
