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

RegionServerCoprocessorHost should be initialized before RpcServer starts

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 0.98.22
    • None
    • 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

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

            Dates

              Created:
              Updated:
              Resolved: