hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hudson (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-13314) Fix NPE in HMaster.getClusterStatus()
Date Tue, 24 Mar 2015 12:18:53 GMT

    [ https://issues.apache.org/jira/browse/HBASE-13314?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14377768#comment-14377768
] 

Hudson commented on HBASE-13314:
--------------------------------

SUCCESS: Integrated in HBase-TRUNK #6296 (See [https://builds.apache.org/job/HBase-TRUNK/6296/])
HBASE-13314 Fix NPE in HMaster.getClusterStatus() (matteo.bertozzi: rev 80d230e1fbeac24d3dfdac8165e24f35ec26f988)
* 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)

Mime
View raw message