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

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


The following commit(s) were added to refs/heads/master by this push:
     new 9d0322cfd5b PBTree: Fix deadlock of PBTree release and flush (#11810)
9d0322cfd5b is described below

commit 9d0322cfd5bb6314b408d6e47aa00358c2dfd4c7
Author: Marcos_Zyk <[email protected]>
AuthorDate: Sat Dec 30 14:34:49 2023 +0800

    PBTree: Fix deadlock of PBTree release and flush (#11810)
---
 .../schemaengine/schemaregion/mtree/impl/pbtree/CachedMTreeStore.java | 2 +-
 .../schemaengine/schemaregion/mtree/impl/pbtree/lock/LockManager.java | 4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/CachedMTreeStore.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/CachedMTreeStore.java
index c0cde5b2988..b5e79f6cd00 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/CachedMTreeStore.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/CachedMTreeStore.java
@@ -586,7 +586,7 @@ public class CachedMTreeStore implements 
IMTreeStore<ICachedMNode> {
    * @return should not continue releasing
    */
   public boolean executeMemoryRelease() {
-    lockManager.globalReadLock();
+    lockManager.globalReadLock(true);
     try {
       if (regionStatistics.getUnpinnedMemorySize() != 0) {
         return !memoryManager.evict();
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/lock/LockManager.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/lock/LockManager.java
index af25af6505a..3c048588202 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/lock/LockManager.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/lock/LockManager.java
@@ -102,6 +102,10 @@ public class LockManager {
     readWriteLock.threadReadLock();
   }
 
+  public void globalReadLock(boolean prior) {
+    readWriteLock.threadReadLock(prior);
+  }
+
   public void globalReadUnlock() {
     readWriteLock.threadReadUnlock();
   }

Reply via email to