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

RegionServerCoprocessorHost should be initialized before RpcServer starts

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.98.22
    • Component/s: None
    • Labels:
      None

      Description

      We found NPE in our 0.98 production cluster because RegionServerCoprocessorHost is not initialized before RpcServer start service.

            // Try and register with the Master; tell it we are here.  Break if
            // server is stopped or the clusterup flag is down or hdfs went wacky.
            while (keepLooping()) {
              RegionServerStartupResponse w = reportForDuty();
              if (w == null) {
                LOG.warn("reportForDuty failed; sleeping and then retrying.");
                this.sleeper.sleep();
              } else {
                handleReportForDutyResponse(w);
                break;
              }
            }
      
            // Initialize the RegionServerCoprocessorHost now that our ephemeral
            // node was created by reportForDuty, in case any coprocessors want
            // to use ZooKeeper
            this.rsHost = new RegionServerCoprocessorHost(this, this.conf);
      

      RpcServer start service in handleReportForDutyResponse(), then it can serve rpc call replicateWALEntry(). But the RegionServerCoprocessorHost is not initialized and it is used in replicateWALEntry, so it will throw a NPE.

        Attachments

        1. HBASE-16402-0.98.patch
          2 kB
          Andrew Kyle Purtell

          Activity

            People

            • Assignee:
              zghao Guanghao Zhang
              Reporter:
              zghao Guanghao Zhang
            • Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: