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;