[
https://issues.apache.org/jira/browse/HBASE-13314?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14377669#comment-14377669
]
Hudson commented on HBASE-13314:
--------------------------------
FAILURE: Integrated in HBase-1.0 #823 (See
[https://builds.apache.org/job/HBase-1.0/823/])
HBASE-13314 Fix NPE in HMaster.getClusterStatus() (matteo.bertozzi: rev
ccbb51d749ea31f13dc8a7c6e008472e4cd2dc5c)
* hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
* hbase-client/src/main/java/org/apache/hadoop/hbase/ClusterStatus.java
> 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
> Fix For: 2.0.0, 1.0.1, 1.1.0
>
> Attachments: HBASE-13314-v0.patch, HBASE-13314-v1.patch,
> HBASE-13314-v1.patch
>
>
> 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)