You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by ad...@apache.org on 2018/08/07 03:25:28 UTC

kudu git commit: KUDU-2525: KuduTableInputFormat may halt before exhausting scan

Repository: kudu
Updated Branches:
  refs/heads/master cec6aa370 -> 60b140e26


KUDU-2525: KuduTableInputFormat may halt before exhausting scan

Change-Id: Ifbfdd2efbd281e4d849917664b33e183e180bafd
Reviewed-on: http://gerrit.cloudera.org:8080/11111
Reviewed-by: Adar Dembo <ad...@cloudera.com>
Tested-by: Kudu Jenkins


Project: http://git-wip-us.apache.org/repos/asf/kudu/repo
Commit: http://git-wip-us.apache.org/repos/asf/kudu/commit/60b140e2
Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/60b140e2
Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/60b140e2

Branch: refs/heads/master
Commit: 60b140e2622d5b7ddb93ee02d39767bccae3371d
Parents: cec6aa3
Author: qqchang2nd <qq...@gmail.com>
Authored: Thu Aug 2 18:51:21 2018 +0800
Committer: Adar Dembo <ad...@cloudera.com>
Committed: Tue Aug 7 03:24:03 2018 +0000

----------------------------------------------------------------------
 .../org/apache/kudu/mapreduce/KuduTableInputFormat.java  | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kudu/blob/60b140e2/java/kudu-mapreduce/src/main/java/org/apache/kudu/mapreduce/KuduTableInputFormat.java
----------------------------------------------------------------------
diff --git a/java/kudu-mapreduce/src/main/java/org/apache/kudu/mapreduce/KuduTableInputFormat.java b/java/kudu-mapreduce/src/main/java/org/apache/kudu/mapreduce/KuduTableInputFormat.java
index c09f805..c39e715 100644
--- a/java/kudu-mapreduce/src/main/java/org/apache/kudu/mapreduce/KuduTableInputFormat.java
+++ b/java/kudu-mapreduce/src/main/java/org/apache/kudu/mapreduce/KuduTableInputFormat.java
@@ -445,7 +445,16 @@ public class KuduTableInputFormat extends InputFormat<NullWritable, RowResult>
         return;
       }
       try {
-        iterator = scanner.nextRows();
+        // scanner.nextRows() sometimes returns an empty RowResultIterator, but
+        // scanner.hasMoreRows() returns still true, so we need to continue
+        // iterating on the scanner until scanner.hasMoreRows() returns false.
+        //
+        // TODO (qqzhang) In future, the backend can guarantee that
+        // TabletService.Scan() would not return the empty results, we need to
+        // remove the loop.
+        do {
+          iterator = scanner.nextRows();
+        } while (!iterator.hasNext() && scanner.hasMoreRows());
       } catch (Exception e) {
         throw new IOException("Couldn't get scan data", e);
       }