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

It's useless to catch SESSIONEXPIRED exception and retry in RecoverableZooKeeper

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 1.1.5, 1.2.2, 0.98.20
    • 1.3.0, 1.2.2, 1.1.6, 2.0.0
    • Zookeeper
    • None
    • Reviewed

    Description

      After HBASE-5549, SESSIONEXPIRED exception was caught and retried with other zookeeper exceptions like ConnectionLoss. But it is useless to retry when a session expired happens, since the retry will never be successful. Though there is a config called "zookeeper.recovery.retry" to control retry times, in our cases, we set this config to a very big number like "99999". When a session expired happens, the regionserver should kill itself, but because of the retrying, threads of regionserver stuck at trying to reconnect to zookeeper, and never properly shut down.

      public Stat exists(String path, boolean watch)
        throws KeeperException, InterruptedException {
          TraceScope traceScope = null;
          try {
            traceScope = Trace.startSpan("RecoverableZookeeper.exists");
            RetryCounter retryCounter = retryCounterFactory.create();
            while (true) {
              try {
                return checkZk().exists(path, watch);
              } catch (KeeperException e) {
                switch (e.code()) {
                  case CONNECTIONLOSS:
                  case SESSIONEXPIRED: //we shouldn't catch this
                  case OPERATIONTIMEOUT:
                    retryOrThrow(retryCounter, e, "exists");
                    break;
      
                  default:
                    throw e;
                }
              }
              retryCounter.sleepUntilNextRetry();
            }
          } finally {
            if (traceScope != null) traceScope.close();
          }
        }
      

      Attachments

        1. HBASE-16238.patch
          4 kB
          Allan Yang
        2. HBASE-16238v2.patch
          5 kB
          Allan Yang

        Activity

          People

            allan163 Allan Yang
            allan163 Allan Yang
            Votes:
            0 Vote for this issue
            Watchers:
            8 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: