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

chenyz 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 29e038d6a96 Fix memory leak when deleting database in PB_Tree mode 
(#10885)
29e038d6a96 is described below

commit 29e038d6a96179b2642e1dfb8842ef20b59ed600
Author: Chen YZ <[email protected]>
AuthorDate: Fri Aug 18 11:02:06 2023 +0800

    Fix memory leak when deleting database in PB_Tree mode (#10885)
---
 .../schemaengine/schemaregion/mtree/impl/pbtree/CachedMTreeStore.java | 1 +
 .../schemaregion/mtree/impl/pbtree/cache/CacheManager.java            | 1 +
 .../schemaregion/mtree/impl/pbtree/cache/CacheMemoryManager.java      | 4 ++++
 3 files changed, 6 insertions(+)

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 2bf9b3a698f..2209a2cdb37 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
@@ -457,6 +457,7 @@ public class CachedMTreeStore implements 
IMTreeStore<ICachedMNode> {
   public void clear() {
     lock.writeLock();
     try {
+      CacheMemoryManager.getInstance().clearCachedMTreeStore(this);
       regionStatistics.setCacheManager(null);
       cacheManager.clear(root);
       root = null;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/cache/CacheManager.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/cache/CacheManager.java
index a381d26d972..b32a3e50d9a 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/cache/CacheManager.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/cache/CacheManager.java
@@ -486,6 +486,7 @@ public abstract class CacheManager implements ICacheManager 
{
   public void clear(ICachedMNode root) {
     clearMNodeInMemory(root);
     clearNodeCache();
+    nodeBuffer.setUpdatedStorageGroupMNode(null);
     nodeBuffer.clear();
   }
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/cache/CacheMemoryManager.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/cache/CacheMemoryManager.java
index 26dea4d16b7..ddf05c20b82 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/cache/CacheMemoryManager.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/cache/CacheMemoryManager.java
@@ -86,6 +86,10 @@ public class CacheMemoryManager {
     return cacheManager;
   }
 
+  public void clearCachedMTreeStore(CachedMTreeStore store) {
+    storeList.remove(store);
+  }
+
   public void init(ISchemaEngineStatistics engineStatistics) {
     flushSemaphore = new FiniteSemaphore(2, 0);
     releaseSemaphore = new FiniteSemaphore(2, 0);

Reply via email to