You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2019/11/04 17:01:41 UTC

[hbase] branch branch-2 updated: HBASE-23247 [hbck2] Schedule SCPs for 'Unknown Servers' (#791)

This is an automated email from the ASF dual-hosted git repository.

stack pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2 by this push:
     new 4f39b93  HBASE-23247 [hbck2] Schedule SCPs for 'Unknown Servers' (#791)
4f39b93 is described below

commit 4f39b93a34d6aef6f6d24b31f24e218c7bfa79eb
Author: Michael Stack <sa...@users.noreply.github.com>
AuthorDate: Mon Nov 4 08:59:57 2019 -0800

    HBASE-23247 [hbck2] Schedule SCPs for 'Unknown Servers' (#791)
    
    Signed-off-by: Sean Busbey <bu...@apache.org>
    Signed-off-by: Duo Zhang <zh...@apache.org>
---
 .../hadoop/hbase/procedure2/store/ProcedureStoreTracker.java   |  3 +++
 .../java/org/apache/hadoop/hbase/master/MasterRpcServices.java | 10 +++++++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.java b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.java
index 9edd871..03e2ce3 100644
--- a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.java
+++ b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.java
@@ -136,6 +136,9 @@ public class ProcedureStoreTracker {
     node = lookupClosestNode(node, procId);
     assert node != null : "expected node to update procId=" + procId;
     assert node.contains(procId) : "expected procId=" + procId + " in the node";
+    if (node == null) {
+      throw new NullPointerException("pid=" + procId);
+    }
     node.insertOrUpdate(procId);
     trackProcIds(procId);
     return node;
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java
index 4387462..833f715 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java
@@ -20,6 +20,7 @@ package org.apache.hadoop.hbase.master;
 
 import static org.apache.hadoop.hbase.master.MasterWalManager.META_FILTER;
 
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.net.BindException;
 import java.net.InetAddress;
@@ -2780,7 +2781,14 @@ public class MasterRpcServices extends RSRpcServices
         AbstractFSWALProvider.getWALDirectoryName(serverName.toString()));
     Path splitDir = logDir.suffix(AbstractFSWALProvider.SPLITTING_EXT);
     Path checkDir = master.getFileSystem().exists(splitDir) ? splitDir : logDir;
-    return master.getFileSystem().listStatus(checkDir, META_FILTER).length > 0;
+    try {
+      return master.getFileSystem().listStatus(checkDir, META_FILTER).length > 0;
+    } catch (FileNotFoundException fnfe) {
+      // If no files, then we don't contain metas; was failing schedule of
+      // SCP because this was FNFE'ing when no server dirs ('Unknown Server').
+      LOG.warn("No dir for WALs for {}; continuing", serverName.toString());
+      return false;
+    }
   }
 
   private boolean shouldSubmitSCP(ServerName serverName) {