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

rong pushed a commit to branch dev/1.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/dev/1.3 by this push:
     new 38c3182243f Load: Fix memory size counting on cases when query 
engine's memory is not sufficient (#15049) (#15050)
38c3182243f is described below

commit 38c3182243fc5d8ea4a9e641e9f5ee3021d654e1
Author: Zikun Ma <[email protected]>
AuthorDate: Mon Mar 10 16:30:12 2025 +0800

    Load: Fix memory size counting on cases when query engine's memory is not 
sufficient (#15049) (#15050)
---
 .../storageengine/load/memory/LoadTsFileMemoryManager.java  | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/memory/LoadTsFileMemoryManager.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/memory/LoadTsFileMemoryManager.java
index f2933a1e703..95e58914c8c 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/memory/LoadTsFileMemoryManager.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/memory/LoadTsFileMemoryManager.java
@@ -88,8 +88,9 @@ public class LoadTsFileMemoryManager {
           sizeInBytes,
           usedMemorySizeInBytes.get());
     }
-    usedMemorySizeInBytes.addAndGet(-sizeInBytes);
-    QUERY_ENGINE_MEMORY_MANAGER.releaseToFreeMemoryForOperators(sizeInBytes);
+    final long sizeToRelease = Math.min(sizeInBytes, 
usedMemorySizeInBytes.get());
+    usedMemorySizeInBytes.addAndGet(-sizeToRelease);
+    QUERY_ENGINE_MEMORY_MANAGER.releaseToFreeMemoryForOperators(sizeToRelease);
     this.notifyAll();
   }
 
@@ -97,8 +98,16 @@ public class LoadTsFileMemoryManager {
       long sizeInBytes) throws LoadRuntimeOutOfMemoryException {
     try {
       forceAllocateFromQuery(sizeInBytes);
+      if (LOGGER.isDebugEnabled()) {
+        LOGGER.debug(
+            "Load: Allocated AnalyzeSchemaMemoryBlock from query engine, size: 
{}", sizeInBytes);
+      }
     } catch (LoadRuntimeOutOfMemoryException e) {
       if (dataCacheMemoryBlock != null && 
dataCacheMemoryBlock.doShrink(sizeInBytes)) {
+        LOGGER.info(
+            "Load: Query engine's memory is not sufficient, allocated 
AnalyzeSchemaMemoryBlock from DataCacheMemoryBlock, size: {}",
+            sizeInBytes);
+        usedMemorySizeInBytes.addAndGet(sizeInBytes);
         return new LoadTsFileAnalyzeSchemaMemoryBlock(sizeInBytes);
       }
       throw e;

Reply via email to