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();
}