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);
 

Reply via email to