Dan Burkert has posted comments on this change. Change subject: KUDU-579 [java_client] Scanner fault tolerance ......................................................................
Patch Set 3: (10 comments) I think overall the error handling needs some work; it looks like right now it's only handling scanner expired and not necessarily anything else (if I understand correctly). Also the change to the master location that JD brought up, not sure what's going on there, but I agree that the change doesn't seem correct. http://gerrit.cloudera.org:8080/#/c/6566/3//COMMIT_MSG Commit Message: PS3, Line 11: scan batch http://gerrit.cloudera.org:8080/#/c/6566/3/java/kudu-client/src/main/java/org/apache/kudu/client/AbstractKuduScannerBuilder.java File java/kudu-client/src/main/java/org/apache/kudu/client/AbstractKuduScannerBuilder.java: Line 78: * Ensures the scanner to be fault tolerant, and returns scan results in primary I think the C++ version reads a little bit better, could you adapt it? The note about hash partitioning can be removed. https://github.com/apache/kudu/blob/master/src/kudu/client/client.h#L1969-L1981 http://gerrit.cloudera.org:8080/#/c/6566/3/java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduScanner.java File java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduScanner.java: Line 245: checkArgument(readMode == ReadMode.READ_AT_SNAPSHOT, "Returning rows in primary key order " + Update this message to be about fault tolerance instead of ordering. Line 474: private final Callback<Deferred<RowResultIterator>, Response> gotNextRow = Why is this necessary? Looks like it's never returning a delayed result. Line 506: if (isFaultTolerant && e instanceof ScannerExpiredException) { I think we can recover from more than just ScannerExpired; see https://github.com/apache/kudu/blob/master/src/kudu/client/scanner-internal.cc#L66 Line 511: return Deferred.fromError(e); // Let the error propagates. 'propagate' was more correct. Line 835: Status statusIncomplete = Status.Incomplete("Cannot continue scanning, " + Is this case being handled? http://gerrit.cloudera.org:8080/#/c/6566/3/java/kudu-client/src/test/java/org/apache/kudu/client/BaseKuduTest.java File java/kudu-client/src/test/java/org/apache/kudu/client/BaseKuduTest.java: Line 377: private static Integer findLeaderTabletServerPort(LocatedTablet tablet) Could this return int instead of Integer? http://gerrit.cloudera.org:8080/#/c/6566/3/java/kudu-client/src/test/java/org/apache/kudu/client/ITScannerMultiTablet.java File java/kudu-client/src/test/java/org/apache/kudu/client/ITScannerMultiTablet.java: PS3, Line 103: kill killing PS3, Line 112: restart restarting -- To view, visit http://gerrit.cloudera.org:8080/6566 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: comment Gerrit-Change-Id: I89d3634c4255b69e28f2de5412e6a5a9d34e931b Gerrit-PatchSet: 3 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Hao Hao <hao....@cloudera.com> Gerrit-Reviewer: Dan Burkert <danburk...@apache.org> Gerrit-Reviewer: Hao Hao <hao....@cloudera.com> Gerrit-Reviewer: Jean-Daniel Cryans <jdcry...@apache.org> Gerrit-Reviewer: Kudu Jenkins Gerrit-HasComments: Yes