From 4b7efb73f591a730e2f3dd0f7c2fa7827431081e Mon Sep 17 00:00:00 2001 From: Umeshkumar9414 <9414umeshkumar@gmail.com> Date: Tue, 5 May 2026 13:34:19 +0530 Subject: [PATCH] HBASE-30142 Resolve NPE while running recoverUnknown command because null RegionLocation --- .../org/apache/hadoop/hbase/master/ServerManager.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java index 09184975a33c..8f7cf4488349 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java @@ -980,11 +980,14 @@ public synchronized boolean isServerDead(ServerName serverName) { /** * Check if a server is unknown. A server can be online, or known to be dead, or unknown to this * manager (i.e, not online, not known to be dead either; it is simply not tracked by the master - * any more, for example, a very old previous instance). + * any more, for example, a very old previous instance). A null serverName should not be + * considered unknown. We set regionLocation null before finding the assign candidate (in-between + * region transition) or while marking it OFFLINE/FAILED_OPEN For more info regarding null-check + * in this refer HBASE-30142 */ public boolean isServerUnknown(ServerName serverName) { - return serverName == null - || (!onlineServers.containsKey(serverName) && !deadservers.isDeadServer(serverName)); + return serverName != null + && (!onlineServers.containsKey(serverName) && !deadservers.isDeadServer(serverName)); } public void shutdownCluster() {