Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-14850 C++ client implementation
  3. HBASE-18188

[C++] Fix Handling do not retry exceptions

    XMLWordPrintableJSON

Details

    • Sub-task
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • HBASE-14850
    • None
    • None

    Description

      Needed for HBASE-18061 and others.

      Java client relies on the exception hierarchy for DoNotRetryExceptions, which there is 40+ subtypes. The exceptions from the server side are rethrown in the client side (ConnectionUtils.translateException, etc) and the rest of the code deals with do-not-retry information by catching DoNotRetryIOException's (thus relying on exception hierarchy).

      This of course does not work on the C++ side, since we lack the info for the java class types. In case the exception happens in the RPC response, the server puts the do_not_retry information as a field in PB (see ExceptionResponse::do_not_retry PB message). However, in other settings, we just serialize the exception without do_not_retry information (see ResultOrException PB message). In some other settings, we can raise exceptions from the client-side (for example when table cannot be found in meta).

      We need a strategy to handle do-not-retry information uniformly, no matter they are coming from client side or server side.

      Attachments

        1. hbase-18188_v1.patch
          24 kB
          Enis Soztutar
        2. hbase-18188_v2.patch
          24 kB
          Enis Soztutar

        Activity

          People

            enis Enis Soztutar
            enis Enis Soztutar
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: