This is an automated email from the ASF dual-hosted git repository.

jackietien pushed a commit to branch DeadLockLog
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit fedecdd9a9f5149b864418e319fe461cc164cd1b
Author: JackieTien97 <[email protected]>
AuthorDate: Thu Apr 15 10:39:22 2021 +0800

    add lock log
---
 .../engine/storagegroup/StorageGroupProcessor.java | 29 +++++++++++++++++++---
 1 file changed, 25 insertions(+), 4 deletions(-)

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 9c9db9f..a77b762 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
@@ -124,6 +124,7 @@ public class StorageGroupProcessor {
   public static final String MERGING_MODIFICATION_FILE_NAME = "merge.mods";
   private static final String FAIL_TO_UPGRADE_FOLDER = "Failed to move {} to 
upgrade folder";
   private static final Logger DEBUG_LOGGER = 
LoggerFactory.getLogger("QUERY_DEBUG");
+  private static final Logger LOCK_LOGGER = 
LoggerFactory.getLogger("LOCK_LOGGER");
 
   private final IoTDBConfig config = IoTDBDescriptor.getInstance().getConfig();
 
@@ -1445,7 +1446,7 @@ public class StorageGroupProcessor {
       QueryFileManager filePathsManager,
       Filter timeFilter)
       throws QueryProcessException {
-    insertLock.readLock().lock();
+    readLock();
     try {
       List<TsFileResource> seqResources =
           getFileResourceListForQuery(
@@ -1477,16 +1478,36 @@ public class StorageGroupProcessor {
     } catch (MetadataException e) {
       throw new QueryProcessException(e);
     } finally {
-      insertLock.readLock().unlock();
+      readUnlock();
+    }
+  }
+
+  public void readLock() {
+    insertLock.writeLock().lock();
+    if (config.isDebugOn()) {
+      LOCK_LOGGER.info("{} insert read lock is held by {}", storageGroupName, 
Thread.currentThread().getName());
+    }
+  }
+
+  public void readUnlock() {
+    insertLock.writeLock().unlock();
+    if (config.isDebugOn()) {
+      LOCK_LOGGER.info("{} insert read lock is unlocked by {}", 
storageGroupName, Thread.currentThread().getName());
     }
   }
 
   public void writeLock() {
     insertLock.writeLock().lock();
+    if (config.isDebugOn()) {
+      LOCK_LOGGER.info("{} insert write lock is held by {}", storageGroupName, 
Thread.currentThread().getName());
+    }
   }
 
   public void writeUnlock() {
     insertLock.writeLock().unlock();
+    if (config.isDebugOn()) {
+      LOCK_LOGGER.info("{} insert write lock is unlocked by {}", 
storageGroupName, Thread.currentThread().getName());
+    }
   }
 
   /**
@@ -2634,7 +2655,7 @@ public class StorageGroupProcessor {
   public void removePartitions(TimePartitionFilter filter) {
     // this requires blocking all other activities
     tsFileManagement.writeLock();
-    insertLock.writeLock().lock();
+    writeLock();
     try {
       // abort ongoing merges
       MergeManager.getINSTANCE().abortMerge(storageGroupName);
@@ -2647,7 +2668,7 @@ public class StorageGroupProcessor {
       removePartitions(filter, tsFileManagement.getIterator(false));
 
     } finally {
-      insertLock.writeLock().unlock();
+      writeUnlock();
       tsFileManagement.writeUnlock();
     }
   }

Reply via email to