This is an automated email from the ASF dual-hosted git repository. lancelly pushed a commit to branch fe_memory_control in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 3d2bcd221983c4a9e0337a17c65b83aea2864c4f Author: lancelly <[email protected]> AuthorDate: Wed May 22 22:26:52 2024 +0800 fix --- .../iotdb/db/queryengine/common/MPPQueryContext.java | 3 ++- .../db/queryengine/plan/analyze/ExpressionAnalyzer.java | 14 ++++++++------ .../db/queryengine/plan/analyze/TemplatedAnalyze.java | 4 ++++ .../db/queryengine/plan/planner/LocalExecutionPlanner.java | 1 + 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java index 533cb651d31..67bbc30d2dd 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java @@ -82,7 +82,8 @@ public class MPPQueryContext { private long bytesToBeReservedForFrontEnd = 0; - // To avoid reserving memory too frequently, we choose to do it in batches. This is upper limit + // To avoid reserving memory too frequently, we choose to do it in batches. This is the lower + // bound // for each batch. private static final long MEMORY_BATCH_THRESHOLD = 1024L * 1024L; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/ExpressionAnalyzer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/ExpressionAnalyzer.java index 9219a3d45b0..ebc52a86a62 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/ExpressionAnalyzer.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/ExpressionAnalyzer.java @@ -410,7 +410,9 @@ public class ExpressionAnalyzer { * expressions */ public static List<Expression> bindSchemaForExpression( - Expression expression, ISchemaTree schemaTree, MPPQueryContext queryContext) { + final Expression expression, + final ISchemaTree schemaTree, + final MPPQueryContext queryContext) { return new BindSchemaForExpressionVisitor() .process(expression, new BindSchemaForExpressionVisitor.Context(schemaTree, queryContext)); } @@ -425,11 +427,11 @@ public class ExpressionAnalyzer { * @return the expression list with full path and after binding schema */ public static List<Expression> bindSchemaForPredicate( - Expression predicate, - List<PartialPath> prefixPaths, - ISchemaTree schemaTree, - boolean isRoot, - MPPQueryContext queryContext) { + final Expression predicate, + final List<PartialPath> prefixPaths, + final ISchemaTree schemaTree, + final boolean isRoot, + final MPPQueryContext queryContext) { return new BindSchemaForPredicateVisitor() .process( predicate, diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TemplatedAnalyze.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TemplatedAnalyze.java index e1fbc88bbcf..87bea8c61a9 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TemplatedAnalyze.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TemplatedAnalyze.java @@ -129,6 +129,8 @@ public class TemplatedAnalyze { TimeSeriesOperand measurementPath = new TimeSeriesOperand( new MeasurementPath(new String[] {measurementName}, measurementSchema)); + // reserve memory for this expression + context.reserveMemoryForFrontEnd(measurementPath.ramBytesUsed()); outputExpressions.add(new Pair<>(measurementPath, null)); paginationController.consumeLimit(); } else { @@ -150,6 +152,8 @@ public class TemplatedAnalyze { TimeSeriesOperand measurementPath = new TimeSeriesOperand( new MeasurementPath(new String[] {measurementName}, measurementSchema)); + // reserve memory for this expression + context.reserveMemoryForFrontEnd(measurementPath.ramBytesUsed()); outputExpressions.add(new Pair<>(measurementPath, resultColumn.getAlias())); } else { break; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LocalExecutionPlanner.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LocalExecutionPlanner.java index 6a8ba336588..9a87f05220c 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LocalExecutionPlanner.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LocalExecutionPlanner.java @@ -57,6 +57,7 @@ public class LocalExecutionPlanner { MAX_REST_MEMORY_FOR_LOAD = (long) ((ALLOCATE_MEMORY_FOR_OPERATORS) * (1.0 - CONFIG.getMaxAllocateMemoryRatioForLoad())); + LOGGER.info("freeMemoryForOperators is : {}", ALLOCATE_MEMORY_FOR_OPERATORS); } /** allocated memory for operator execution */
