Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-19900

Region-level exception destroy the result of batch

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.3.2, 2.0.0-beta-2, 1.4.2, 2.0.0, 1.2.7
    • Component/s: None
    • Labels:
      None
    • Hadoop Flags:
      Reviewed
    • Release Note:
      Hide
      This fix makes the following changes to how client handle the both of action result and region exception.
      1) honor the action result rather than region exception. If the action have both of true result and region exception, the action is fine as the exception is caused by other actions which are in the same region.
      2) honor the action exception rather than region exception. If the action have both of action exception and region exception, we deal with the action exception only. If we also handle the region exception for the same action, it will introduce the negative count of actions in progress. The AsyncRequestFuture#waitUntilDone will block forever.
      Show
      This fix makes the following changes to how client handle the both of action result and region exception. 1) honor the action result rather than region exception. If the action have both of true result and region exception, the action is fine as the exception is caused by other actions which are in the same region. 2) honor the action exception rather than region exception. If the action have both of action exception and region exception, we deal with the action exception only. If we also handle the region exception for the same action, it will introduce the negative count of actions in progress. The AsyncRequestFuture#waitUntilDone will block forever.

      Description

      1) decrease action count repeatedly

      If the AsyncRequestFuture#waitUntilDone return prematurely, user will get the incorrect results. Or user will be block by AsyncRequestFuture#waitUntilDone as the count is never equal with 0.

      2) the successive result will be overwrited 

      3) The failed op is added to RetriesExhaustedWithDetailsException repeatedly 

      AsyncRequestFutureImpl#receiveMultiAction process the action-lever error first, and then add the region-level exception to each action. Hence, user may get the various exceptions for the same action (row op) from the RetriesExhaustedWithDetailsException.

      In fact, if both of action-level exception and region-lever exception exist, they always have the same context. I'm not sure whether that is what RetriesExhaustedWithDetailsException want. As i see it, we shouldn't have the duplicate ops in RetriesExhaustedWithDetailsException since that may confuse users if they catch the RetriesExhaustedWithDetailsException to check the invalid operations.

        Attachments

        1. HBASE-19900.v0.patch
          19 kB
          Chia-Ping Tsai
        2. HBASE-19900.v1.patch
          39 kB
          Chia-Ping Tsai
        3. HBASE-19900.v2.patch
          39 kB
          Chia-Ping Tsai
        4. HBASE-19900.v2.patch
          39 kB
          Chia-Ping Tsai
        5. HBASE-19900.branch-1.4.v0.patch
          24 kB
          Chia-Ping Tsai
        6. HBASE-19900.v2.patch
          39 kB
          Michael Stack

          Issue Links

            Activity

              People

              • Assignee:
                chia7712 Chia-Ping Tsai
                Reporter:
                chia7712 Chia-Ping Tsai
              • Votes:
                0 Vote for this issue
                Watchers:
                6 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: