Skip to content

Commit b8dad5d

Browse files
authored
fix: catch Exception during TVList ownership transfer (#17540)
1 parent acaabb8 commit b8dad5d

1 file changed

Lines changed: 17 additions & 3 deletions

File tree

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceContext.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.apache.iotdb.db.queryengine.common.FragmentInstanceId;
3535
import org.apache.iotdb.db.queryengine.common.QueryId;
3636
import org.apache.iotdb.db.queryengine.common.SessionInfo;
37+
import org.apache.iotdb.db.queryengine.exception.MemoryNotEnoughException;
3738
import org.apache.iotdb.db.queryengine.metric.DriverSchedulerMetricSet;
3839
import org.apache.iotdb.db.queryengine.metric.QueryRelatedResourceMetricSet;
3940
import org.apache.iotdb.db.queryengine.metric.QueryResourceMetricSet;
@@ -959,9 +960,22 @@ private void releaseTVListOwnedByQuery() {
959960
memoryReservationManager.releaseMemoryVirtually(tvList.getReservedMemoryBytes());
960961
FragmentInstanceContext queryContext =
961962
(FragmentInstanceContext) queryContextSet.iterator().next();
962-
queryContext
963-
.getMemoryReservationContext()
964-
.reserveMemoryVirtually(releasedBytes.left, releasedBytes.right);
963+
try {
964+
queryContext
965+
.getMemoryReservationContext()
966+
.reserveMemoryVirtually(releasedBytes.left, releasedBytes.right);
967+
} catch (MemoryNotEnoughException ex) {
968+
LOGGER.warn(
969+
"MemoryNotEnoughException when transferring TVList ownership from query {} to another query {}.",
970+
this.getId(),
971+
queryContext.getId());
972+
} catch (RuntimeException ex) {
973+
LOGGER.warn(
974+
"Unexpected Exception when transferring TVList ownership from query {} to another query {}.",
975+
this.getId(),
976+
queryContext.getId(),
977+
ex);
978+
}
965979

966980
if (LOGGER.isDebugEnabled()) {
967981
LOGGER.debug(

0 commit comments

Comments
 (0)