Matteo Bertozzi created HBASE-13314:
---------------------------------------
Summary: Fix NPE in HMaster.getClusterStatus()
Key: HBASE-13314
URL: https://issues.apache.org/jira/browse/HBASE-13314
Project: HBase
Issue Type: Bug
Reporter: Matteo Bertozzi
Assignee: Matteo Bertozzi
Priority: Minor
On a test cluster we got a
{noformat}
java.lang.NullPointerException
at org.apache.hadoop.hbase.master.HMaster.getClusterStatus(HMaster.java:1742)
at
org.apache.hadoop.hbase.master.balancer.ClusterStatusChore.chore(ClusterStatusChore.java:50)
at org.apache.hadoop.hbase.Chore.run(Chore.java:87)
{noformat}
In HMaster.getClusterStatus() we have a couple of NPE.
listChildrenNoWatch() may return null if the node is not found
{code}
try {
backupMasterStrings = ZKUtil.listChildrenNoWatch(this.zooKeeper,
this.zooKeeper.backupMasterAddressesZNode); <--- THIS MAY RETURN NULL
} catch (KeeperException e) {
LOG.warn(this.zooKeeper.prefix("Unable to list backup servers"), e);
backupMasterStrings = new ArrayList<String>(0);
}
List<ServerName> backupMasters = new ArrayList<ServerName>(
backupMasterStrings.size()); <--- WE DON'T CHECK FOR NULL
{code}
then below, we build ClusterStatus with args that may be null
{code}
String clusterId = fileSystemManager != null ?
fileSystemManager.getClusterId().toString() : null;
Map<String, RegionState> regionsInTransition = assignmentManager != null ?
assignmentManager.getRegionStates().getRegionsInTransition() : null;
String[] coprocessors = cpHost != null ? getMasterCoprocessors() : null;
Map<ServerName, ServerLoad> onlineServers = null;
Set<ServerName> deadServers = null;
if (serverManager != null) {
deadServers = serverManager.getDeadServers().copyServerNames();
onlineServers = serverManager.getOnlineServers();
}
return new ClusterStatus(VersionInfo.getVersion(), clusterId,
onlineServers, deadServers, serverName, backupMasters,
regionsInTransition, coprocessors, balancerOn);
{code}
In ClusterStatus equals(), hashCode(), toString() we don't check for nulls
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)