This is an automated email from the ASF dual-hosted git repository. michaelsmith pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/impala.git
commit 4624406c819f866462103948f5525f260b6342f1 Author: Surya Hebbar <[email protected]> AuthorDate: Wed Feb 18 19:20:40 2026 +0530 IMPALA-14706: Use InMemoryMetricsReporter from the Iceberg library This change uses the InMemoryMetricsReporter class that is available in the Iceberg library from release 1.4.0, instead of the user declared InMemoryMetrcsReporter class. We are dropping the private static InMemoryMetricsReporter class from IcebergScanPlanner and will use the Iceberg's builtin class instead. In addition, the scanMetricsResult() method can be dropped and the relevant method scanMetrics() can be used directly. Testing: - Ran tests related to iceberg locally and examined Change-Id: I2a5acb54ad6d4b62ff6da26f250e83068a33d316 Reviewed-on: http://gerrit.cloudera.org:8080/23994 Tested-by: Impala Public Jenkins <[email protected]> Reviewed-by: Noemi Pap-Takacs <[email protected]> --- .../apache/impala/planner/IcebergScanPlanner.java | 37 ++++++++-------------- 1 file changed, 14 insertions(+), 23 deletions(-) diff --git a/fe/src/main/java/org/apache/impala/planner/IcebergScanPlanner.java b/fe/src/main/java/org/apache/impala/planner/IcebergScanPlanner.java index 3f5546d4b..efb167c09 100644 --- a/fe/src/main/java/org/apache/impala/planner/IcebergScanPlanner.java +++ b/fe/src/main/java/org/apache/impala/planner/IcebergScanPlanner.java @@ -45,8 +45,7 @@ import org.apache.iceberg.expressions.ExpressionUtil; import org.apache.iceberg.expressions.ExpressionVisitors; import org.apache.iceberg.expressions.True; import org.apache.iceberg.io.CloseableIterable; -import org.apache.iceberg.metrics.MetricsReport; -import org.apache.iceberg.metrics.MetricsReporter; +import org.apache.iceberg.metrics.InMemoryMetricsReporter; import org.apache.iceberg.metrics.ScanMetricsResult; import org.apache.iceberg.metrics.ScanReport; import org.apache.iceberg.types.Types.NestedField; @@ -105,26 +104,6 @@ import org.slf4j.LoggerFactory; * class deals with such complexities. */ public class IcebergScanPlanner { - // TODO: This class is available in the Iceberg library from release 1.4.0. We could - // drop this and use the one from Iceberg once we've done a version bump. - private static class InMemoryMetricsReporter implements MetricsReporter { - private MetricsReport metricsReport_; - - @Override - public void report(MetricsReport report) { - Preconditions.checkArgument( - report == null || report instanceof ScanReport, - "Metrics report is not a scan report"); - this.metricsReport_ = report; - } - - public ScanMetricsResult scanMetricsResult() { - if (metricsReport_ == null) return null; - - return ((ScanReport) metricsReport_).scanMetrics(); - } - } - private static final Logger LOG = LoggerFactory.getLogger(IcebergScanPlanner.class); private Analyzer analyzer_; @@ -195,11 +174,23 @@ public class IcebergScanPlanner { snapshotId_ = IcebergUtil.getSnapshotId(getIceTable(), tblRef_.getTimeTravelSpec()); } + private ScanMetricsResult getScanMetrics() { + ScanReport report = metricsReporter_.scanReport(); + ScanMetricsResult metricsResult; + if (report == null) { + metricsResult = null; + } else { + metricsResult = report.scanMetrics(); + } + return metricsResult; + } + public PlanNode createIcebergScanPlan() throws ImpalaException { PlanNode res = createPlanNodeHelper(); Preconditions.checkNotNull(res); - ScanMetricsResult metricsResult = metricsReporter_.scanMetricsResult(); + ScanMetricsResult metricsResult = getScanMetrics(); + Preconditions.checkState( !needIcebergForPlanning() || snapshotId_ == -1 || metricsResult != null);
