This is an automated email from the ASF dual-hosted git repository.
JackieTien97 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 9fff324b023 fix: catch exception during TVList ownership transfer to
avoid memory leak
9fff324b023 is described below
commit 9fff324b02325b44bb88da9d027b364bef236ff8
Author: shizy <[email protected]>
AuthorDate: Thu Apr 23 14:30:11 2026 +0800
fix: catch exception during TVList ownership transfer to avoid memory leak
---
.../execution/fragment/FragmentInstanceContext.java | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceContext.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceContext.java
index f02b86579b4..08e23eea69c 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceContext.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceContext.java
@@ -32,6 +32,7 @@ import org.apache.iotdb.db.queryengine.common.DeviceContext;
import org.apache.iotdb.db.queryengine.common.FragmentInstanceId;
import org.apache.iotdb.db.queryengine.common.QueryId;
import org.apache.iotdb.db.queryengine.common.SessionInfo;
+import org.apache.iotdb.db.queryengine.exception.MemoryNotEnoughException;
import org.apache.iotdb.db.queryengine.metric.DriverSchedulerMetricSet;
import org.apache.iotdb.db.queryengine.metric.QueryRelatedResourceMetricSet;
import org.apache.iotdb.db.queryengine.metric.QueryResourceMetricSet;
@@ -899,9 +900,22 @@ public class FragmentInstanceContext extends QueryContext {
memoryReservationManager.releaseMemoryVirtually(tvList.getReservedMemoryBytes());
FragmentInstanceContext queryContext =
(FragmentInstanceContext) queryContextSet.iterator().next();
- queryContext
- .getMemoryReservationContext()
- .reserveMemoryVirtually(releasedBytes.left,
releasedBytes.right);
+ try {
+ queryContext
+ .getMemoryReservationContext()
+ .reserveMemoryVirtually(releasedBytes.left,
releasedBytes.right);
+ } catch (MemoryNotEnoughException ex) {
+ LOGGER.warn(
+ "MemoryNotEnoughException when transferring TVList ownership
from query {} to another query {}.",
+ this.getId(),
+ queryContext.getId());
+ } catch (RuntimeException ex) {
+ LOGGER.warn(
+ "Unexpected Exception when transferring TVList ownership
from query {} to another query {}.",
+ this.getId(),
+ queryContext.getId(),
+ ex);
+ }
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(