From a197436a99ffc82c93f3ce62316dd76ccb942080 Mon Sep 17 00:00:00 2001 From: Aman Poonia Date: Thu, 24 Oct 2024 10:19:11 +0530 Subject: [PATCH] HBASE-28928 Handle NPE in Split/Merge table when getMasterQuotaManager returns null (#6375) Signed-off-by: Nihal Jain --- .../hbase/master/assignment/MergeTableRegionsProcedure.java | 6 +++++- .../hbase/master/assignment/SplitTableRegionProcedure.java | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java index b79be474182e..8811deddb3bf 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java @@ -51,6 +51,7 @@ import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil; import org.apache.hadoop.hbase.procedure2.ProcedureMetrics; import org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer; +import org.apache.hadoop.hbase.quotas.MasterQuotaManager; import org.apache.hadoop.hbase.quotas.QuotaExceededException; import org.apache.hadoop.hbase.regionserver.HRegionFileSystem; import org.apache.hadoop.hbase.regionserver.HStoreFile; @@ -540,7 +541,10 @@ private void preMergeRegions(final MasterProcedureEnv env) throws IOException { } // TODO: Clean up split and merge. Currently all over the place. try { - env.getMasterServices().getMasterQuotaManager().onRegionMerged(this.mergedRegion); + MasterQuotaManager masterQuotaManager = env.getMasterServices().getMasterQuotaManager(); + if (masterQuotaManager != null) { + masterQuotaManager.onRegionMerged(this.mergedRegion); + } } catch (QuotaExceededException e) { // TODO: why is this here? merge requests can be submitted by actors other than the normalizer env.getMasterServices().getRegionNormalizerManager() 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 01cd012ddad1..be6991b19f08 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 @@ -57,6 +57,7 @@ import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil; import org.apache.hadoop.hbase.procedure2.ProcedureMetrics; import org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer; +import org.apache.hadoop.hbase.quotas.MasterQuotaManager; import org.apache.hadoop.hbase.quotas.QuotaExceededException; import org.apache.hadoop.hbase.regionserver.HRegionFileSystem; import org.apache.hadoop.hbase.regionserver.HStore; @@ -601,7 +602,10 @@ private void preSplitRegion(final MasterProcedureEnv env) // TODO: Clean up split and merge. Currently all over the place. // Notify QuotaManager and RegionNormalizer try { - env.getMasterServices().getMasterQuotaManager().onRegionSplit(this.getParentRegion()); + MasterQuotaManager masterQuotaManager = env.getMasterServices().getMasterQuotaManager(); + if (masterQuotaManager != null) { + masterQuotaManager.onRegionSplit(this.getParentRegion()); + } } catch (QuotaExceededException e) { // TODO: why is this here? split requests can be submitted by actors other than the normalizer env.getMasterServices().getRegionNormalizerManager()