hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "huaxiang sun (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-16345) RpcRetryingCallerWithReadReplicas#call() should catch some RegionServer Exceptions
Date Thu, 08 Sep 2016 23:19:20 GMT

    [ https://issues.apache.org/jira/browse/HBASE-16345?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15475327#comment-15475327

huaxiang sun commented on HBASE-16345:

A side note, we found that the current scan does not honor the following

The scan actually scans all replicas. This is not consistent with the Get. If this is an issue,
I can create a new jira to address it.
The following testing case shows the issue:

  @Test public void testReplicaScanWithReplica() throws IOException {
    // Create table then get the single region for our new table.
    HTableDescriptor hdt = HTU.createTableDescriptor("testReplicaScanTable");

    try {
      Table table = HTU.createTable(hdt, new byte[][] { f }, null);

      Put p = new Put(row);
      p.addColumn(f, row, row);

      // Flush so it can be picked by the replica refresher thread

      // Sleep for some time until data is picked up by replicas
      try {
        Thread.sleep(2 * REFRESH_PERIOD);
      } catch (InterruptedException e1) {

      // But if we ask for stale we will get it
      // Instantiating the Scan class
      Scan scan = new Scan();

      // Scanning the required columns

      // Getting the scan result
      ResultScanner scanner = table.getScanner(scan);

      Result r = scanner.next();

    } finally {


> RpcRetryingCallerWithReadReplicas#call() should catch some RegionServer Exceptions
> ----------------------------------------------------------------------------------
>                 Key: HBASE-16345
>                 URL: https://issues.apache.org/jira/browse/HBASE-16345
>             Project: HBase
>          Issue Type: Bug
>          Components: Client
>    Affects Versions: 2.0.0
>            Reporter: huaxiang sun
>            Assignee: huaxiang sun
>         Attachments: HBASE-16345-v001.patch, HBASE-16345.master.001.patch, HBASE-16345.master.002.patch,
HBASE-16345.master.003.patch, HBASE-16345.master.004.patch, HBASE-16345.master.005.patch
> Update for the description. Debugged more at this front based on the comments from Enis.

> The cause is that for the primary replica, if its retry is exhausted too fast, f.get()
[1] returns ExecutionException. This Exception needs to be ignored and continue with the replicas.
> The other issue is that after adding calls for the replicas, if the first completed task
gets ExecutionException (due to the retry exhausted), it throws the exception to the client[2].
> In this case, it needs to loop through these tasks, waiting for the success one. If no
one succeeds, throw exception.
> Similar for the scan as well
> [1] https://github.com/apache/hbase/blob/master/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RpcRetryingCallerWithReadReplicas.java#L197
> [2] https://github.com/apache/hbase/blob/master/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RpcRetryingCallerWithReadReplicas.java#L219

This message was sent by Atlassian JIRA

View raw message