From b7aa78442f9ef9ddcaa5a5d0d70acf84789cbd85 Mon Sep 17 00:00:00 2001 From: zy-kkk Date: Wed, 27 Aug 2025 19:48:15 +0800 Subject: [PATCH] [Fix](iceberg) Fix NoSuchElementException in IcebergSysTableJniScanner when reading empty system tables --- .../apache/doris/iceberg/IcebergSysTableJniScanner.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/fe/be-java-extensions/iceberg-metadata-scanner/src/main/java/org/apache/doris/iceberg/IcebergSysTableJniScanner.java b/fe/be-java-extensions/iceberg-metadata-scanner/src/main/java/org/apache/doris/iceberg/IcebergSysTableJniScanner.java index 9603ed35504a6c..0bbf827c727668 100644 --- a/fe/be-java-extensions/iceberg-metadata-scanner/src/main/java/org/apache/doris/iceberg/IcebergSysTableJniScanner.java +++ b/fe/be-java-extensions/iceberg-metadata-scanner/src/main/java/org/apache/doris/iceberg/IcebergSysTableJniScanner.java @@ -101,10 +101,13 @@ private void nextScanTask() throws IOException { @Override protected int getNext() throws IOException { int rows = 0; - while ((reader.hasNext() || scanTasks.hasNext()) && rows < getBatchSize()) { - if (!reader.hasNext()) { + while (rows < getBatchSize()) { + while (!reader.hasNext() && scanTasks.hasNext()) { nextScanTask(); } + if (!reader.hasNext()) { + break; + } StructLike row = reader.next(); for (int i = 0; i < fields.size(); i++) { NestedField field = fields.get(i);