Andrew Wong has submitted this change and it was merged. ( 
http://gerrit.cloudera.org:8080/17124 )

Change subject: [java] KUDU-3213: try at different server on TABLET_NOT_RUNNING
......................................................................

[java] KUDU-3213: try at different server on TABLET_NOT_RUNNING

Prior to this patch, if a tablet server were quiescing for a prolonged
period, scan requests could time out, complaining that the tablet server
is quiescing, but without ever retrying the scan at another tablet
server. This is because tablet servers will return TABLET_NOT_RUNNING to
clients when attempting a scan while quiescing. The behavior in the C++
client is that the location is then blacklisted and the request is
retried elsewhere. The behavior in the Java client, though, is that the
same location is retried until failure.

This patch addresses this by treating TABLET_NOT_RUNNING errors in the
Java client as we would for TABLET_NOT_FOUND, which is actually quite
similar to the handling for TABLET_NOT_RUNNING in the C++ client: the
location is invalidated for further attempts, and the request is retried
elsewhere.

Why not just have quiescing tablet servers return TABLET_NOT_FOUND,
then? TABLET_NOT_FOUND errors in the C++ client actually have some
behavior not present in the Java client: a tablet whose location is
invalidated with TABLET_NOT_FOUND in the C++ client will be required to
be looked up again, requiring a round trip to the master. This behavior
doesn't exist in the Java client, so I thought it easiest to piggyback
on TABLET_NOT_FOUND handling for now.

Change-Id: I38ac84a52676ff361fa1ba996665b338d1bbfba1
Reviewed-on: http://gerrit.cloudera.org:8080/17124
Tested-by: Kudu Jenkins
Reviewed-by: Alexey Serbin <aser...@cloudera.com>
---
M java/kudu-client/src/main/java/org/apache/kudu/client/RpcProxy.java
M java/kudu-client/src/test/java/org/apache/kudu/client/TestKuduScanner.java
M java/kudu-test-utils/src/main/java/org/apache/kudu/test/KuduTestHarness.java
3 files changed, 59 insertions(+), 4 deletions(-)

Approvals:
  Kudu Jenkins: Verified
  Alexey Serbin: Looks good to me, approved

--
To view, visit http://gerrit.cloudera.org:8080/17124
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I38ac84a52676ff361fa1ba996665b338d1bbfba1
Gerrit-Change-Number: 17124
Gerrit-PatchSet: 6
Gerrit-Owner: Andrew Wong <aw...@cloudera.com>
Gerrit-Reviewer: Alexey Serbin <aser...@cloudera.com>
Gerrit-Reviewer: Andrew Wong <aw...@cloudera.com>
Gerrit-Reviewer: Attila Bukor <abu...@apache.org>
Gerrit-Reviewer: Grant Henke <granthe...@apache.org>
Gerrit-Reviewer: Hao Hao <hao....@cloudera.com>
Gerrit-Reviewer: Kudu Jenkins (120)

Reply via email to