kudu-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From t...@apache.org
Subject [6/8] kudu git commit: [java client] Retry regressing counts in ITClient
Date Thu, 06 Oct 2016 00:06:02 GMT
[java client] Retry regressing counts in ITClient

There's currently no sure way to read your writes, even with snapshot scans, so we
can either retry counting rows or ignore it. This patch is doing the former, unless
we hit some artificial timeout.

Change-Id: I1e79a6c7aaf069294a6ca40e487947d14d9f2aa7
Reviewed-on: http://gerrit.cloudera.org:8080/4597
Reviewed-by: Adar Dembo <adar@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/98130e3c
Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/98130e3c
Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/98130e3c

Branch: refs/heads/master
Commit: 98130e3c40780e80dd46e9c729424554f2c77a4f
Parents: f26ab7d
Author: Jean-Daniel Cryans <jdcryans@apache.org>
Authored: Mon Oct 3 09:16:18 2016 -0700
Committer: Jean-Daniel Cryans <jdcryans@apache.org>
Committed: Wed Oct 5 23:30:18 2016 +0000

----------------------------------------------------------------------
 .../java/org/apache/kudu/client/ITClient.java   | 38 +++++++++++++-------
 1 file changed, 26 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kudu/blob/98130e3c/java/kudu-client/src/test/java/org/apache/kudu/client/ITClient.java
----------------------------------------------------------------------
diff --git a/java/kudu-client/src/test/java/org/apache/kudu/client/ITClient.java b/java/kudu-client/src/test/java/org/apache/kudu/client/ITClient.java
index d4ffec0..1ff242d 100644
--- a/java/kudu-client/src/test/java/org/apache/kudu/client/ITClient.java
+++ b/java/kudu-client/src/test/java/org/apache/kudu/client/ITClient.java
@@ -380,21 +380,35 @@ public class ITClient extends BaseKuduTest {
      * @return true if the full scan was successful, false if there was an error
      */
     private boolean fullScan() {
-      KuduScanner scanner = getScannerBuilder().build();
-      try {
-        int rowCount = countRowsInScan(scanner);
-        if (rowCount < lastRowCount) {
-          reportError("Row count regressed: " + rowCount + " < " + lastRowCount, null);
-          return false;
+      int rowCount;
+      DeadlineTracker deadlineTracker = new DeadlineTracker();
+      deadlineTracker.setDeadline(DEFAULT_SLEEP);
+
+      while (KEEP_RUNNING_LATCH.getCount() > 0 && !deadlineTracker.timedOut())
{
+        KuduScanner scanner = getScannerBuilder().build();
+
+        try {
+          rowCount = countRowsInScan(scanner);
+        } catch (KuduException e) {
+          return checkAndReportError("Got error while row counting", e);
+        }
+
+        if (rowCount >= lastRowCount) {
+          if (rowCount > lastRowCount) {
+            lastRowCount = rowCount;
+            LOG.info("New row count {}", lastRowCount);
+          }
+          return true;
         }
-        if (rowCount > lastRowCount) {
-          lastRowCount = rowCount;
-          LOG.info("New row count {}", lastRowCount);
+
+        // Due to the lack of KUDU-430, we need to loop until the row count stops regressing.
+        try {
+          KEEP_RUNNING_LATCH.await(50, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+          // No need to do anything, we'll exit the loop once we test getCount() in the condition.
         }
-      } catch (KuduException e) {
-        return checkAndReportError("Got error while row counting", e);
       }
-      return true;
+      return !deadlineTracker.timedOut();
     }
 
     private KuduScanner.KuduScannerBuilder getScannerBuilder() {


Mime
View raw message