Jean-Daniel Cryans has uploaded a new change for review.

  http://gerrit.cloudera.org:8080/4570

Change subject: [java client] Tight-ish loop in master lookups if a tablet 
doesn't have a leader
......................................................................

[java client] Tight-ish loop in master lookups if a tablet doesn't have a leader

There's currently the possiblity of a situation like this:
1. sendRpcToTablet finds the tablet that the RPC is going to doesn't have a 
leader
2. a master lookup is sent
3. discoverTablet is called back and still doesn't find a leader
4. RetryRpcCallback is invoked right away, going back to step 1

This quickly gets us with this exception:

Too many attempts: KuduRpc(method=Write, tablet=redacted, attempt=101, 
DeadlineTracker(timeout=30000, elapsed=4747)

Notice how it retried 101 times in less than 5 seconds.

This patch changes step 3 so that an exception is thrown so that RetryRpcErrback
is invoked instead, which will add delay before retrying the RPC.

This bug was found by ITClient. It's not _just_ a flaky test!

Change-Id: Ibf2bd53b03551642e4d036d322e1e592b7c2cfec
---
M java/kudu-client/src/main/java/org/apache/kudu/client/AsyncKuduClient.java
A 
java/kudu-client/src/main/java/org/apache/kudu/client/NoSuitableReplicaException.java
M java/kudu-client/src/test/java/org/apache/kudu/client/TestAsyncKuduClient.java
3 files changed, 98 insertions(+), 19 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/70/4570/1
-- 
To view, visit http://gerrit.cloudera.org:8080/4570
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibf2bd53b03551642e4d036d322e1e592b7c2cfec
Gerrit-PatchSet: 1
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-Owner: Jean-Daniel Cryans <jdcry...@apache.org>

Reply via email to