Repository: hbase Updated Branches: refs/heads/master 125767b44 -> 1339ff966
HBASE-20419 Fix potential NPE in ZKUtil#listChildrenAndWatchForNewChildren callers Signed-off-by: Yu Li <l...@apache.org> Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/1339ff96 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/1339ff96 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/1339ff96 Branch: refs/heads/master Commit: 1339ff9666f449d8850236802c008a27307b7c61 Parents: 125767b Author: lujie <lu...@ict.ac.cn> Authored: Mon Apr 16 16:01:49 2018 +0800 Committer: Yu Li <l...@apache.org> Committed: Mon Apr 16 16:06:57 2018 +0800 ---------------------------------------------------------------------- .../apache/hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.java | 6 +++++- .../apache/hadoop/hbase/procedure/ZKProcedureMemberRpcs.java | 8 ++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/1339ff96/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.java ---------------------------------------------------------------------- diff --git a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.java b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.java index a9f8284..659343c 100644 --- a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.java +++ b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.java @@ -354,7 +354,11 @@ final class RSGroupInfoManagerImpl implements RSGroupInfoManager { //Overwrite any info stored by table, this takes precedence try { if(ZKUtil.checkExists(watcher, groupBasePath) != -1) { - for(String znode: ZKUtil.listChildrenAndWatchForNewChildren(watcher, groupBasePath)) { + List<String> children = ZKUtil.listChildrenAndWatchForNewChildren(watcher, groupBasePath); + if (children == null) { + return RSGroupInfoList; + } + for(String znode: children) { byte[] data = ZKUtil.getData(watcher, ZNodePaths.joinZNode(groupBasePath, znode)); if(data.length > 0) { ProtobufUtil.expectPBMagicPrefix(data); http://git-wip-us.apache.org/repos/asf/hbase/blob/1339ff96/hbase-server/src/main/java/org/apache/hadoop/hbase/procedure/ZKProcedureMemberRpcs.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/procedure/ZKProcedureMemberRpcs.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/procedure/ZKProcedureMemberRpcs.java index f29d133..57d929d 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/procedure/ZKProcedureMemberRpcs.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/procedure/ZKProcedureMemberRpcs.java @@ -135,8 +135,12 @@ public class ZKProcedureMemberRpcs implements ProcedureMemberRpcs { LOG.debug("Checking for aborted procedures on node: '" + zkController.getAbortZnode() + "'"); try { // this is the list of the currently aborted procedues - for (String node : ZKUtil.listChildrenAndWatchForNewChildren(zkController.getWatcher(), - zkController.getAbortZnode())) { + List<String> children = ZKUtil.listChildrenAndWatchForNewChildren(zkController.getWatcher(), + zkController.getAbortZnode()); + if (children == null || children.isEmpty()) { + return; + } + for (String node : children) { String abortNode = ZNodePaths.joinZNode(zkController.getAbortZnode(), node); abort(abortNode); }