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