From 4104c0428f70e58ecf9f0e71beda5348f939ce2e Mon Sep 17 00:00:00 2001 From: teamconfx Date: Thu, 22 Jan 2026 15:21:29 -0600 Subject: [PATCH] fix hbase 29805 --- .../master/assignment/SplitTableRegionProcedure.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java index 3d3d3d18de23..8c86590e93ac 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java @@ -206,18 +206,24 @@ private void checkSplittable(final MasterProcedureEnv env, final RegionInfo regi IOException splittableCheckIOE = null; boolean splittable = false; if (node != null) { + // Check if region is assigned to a server before proceeding + ServerName regionLocation = node.getRegionLocation(); + if (regionLocation == null) { + throw new DoNotRetryIOException("Region " + regionToSplit.getShortNameToLog() + + " is not assigned to any server. Cannot check splittability."); + } try { GetRegionInfoResponse response; if (!hasBestSplitRow()) { LOG.info( "{} splitKey isn't explicitly specified, will try to find a best split key from RS {}", - node.getRegionInfo().getRegionNameAsString(), node.getRegionLocation()); - response = AssignmentManagerUtil.getRegionInfoResponse(env, node.getRegionLocation(), + node.getRegionInfo().getRegionNameAsString(), regionLocation); + response = AssignmentManagerUtil.getRegionInfoResponse(env, regionLocation, node.getRegionInfo(), true); bestSplitRow = response.hasBestSplitRow() ? response.getBestSplitRow().toByteArray() : null; } else { - response = AssignmentManagerUtil.getRegionInfoResponse(env, node.getRegionLocation(), + response = AssignmentManagerUtil.getRegionInfoResponse(env, regionLocation, node.getRegionInfo(), false); } splittable = response.hasSplittable() && response.getSplittable();