From a1a0307bc94f048795158151ea8083ea0cb3191e Mon Sep 17 00:00:00 2001 From: Ke Han Date: Thu, 21 Sep 2023 15:26:32 +0000 Subject: [PATCH 1/3] HBASE-28105 NPE in QuotaCache if Table is dropped from cluster --- .../hadoop/hbase/quotas/QuotaCache.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/QuotaCache.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/QuotaCache.java index 56253f7fcbb2..ee54a5aaf7af 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/QuotaCache.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/QuotaCache.java @@ -371,19 +371,21 @@ private void updateQuotaFactors() { // Update table machine quota factors for (TableName tableName : tableQuotaCache.keySet()) { - double factor = 1; - try { - long regionSize = tableRegionStatesCount.get(tableName).getOpenRegions(); - if (regionSize == 0) { - factor = 0; - } else { - int localRegionSize = rsServices.getRegions(tableName).size(); - factor = 1.0 * localRegionSize / regionSize; + if (tableRegionStatesCount.containsKey(tableName)) { + double factor = 1; + try { + long regionSize = tableRegionStatesCount.get(tableName).getOpenRegions(); + if (regionSize == 0) { + factor = 0; + } else { + int localRegionSize = rsServices.getRegions(tableName).size(); + factor = 1.0 * localRegionSize / regionSize; + } + } catch (IOException e) { + LOG.warn("Get table regions failed: {}", tableName, e); } - } catch (IOException e) { - LOG.warn("Get table regions failed: {}", tableName, e); + tableMachineQuotaFactors.put(tableName, factor); } - tableMachineQuotaFactors.put(tableName, factor); } } } From 9a5ca512315a279e0e8c1fbd6c931f6c70c431d3 Mon Sep 17 00:00:00 2001 From: Ke Han Date: Fri, 22 Sep 2023 21:21:49 +0000 Subject: [PATCH 2/3] remove the dropped table from tableMachineQuotaFactors --- .../main/java/org/apache/hadoop/hbase/quotas/QuotaCache.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/QuotaCache.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/QuotaCache.java index ee54a5aaf7af..350b08a965fa 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/QuotaCache.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/QuotaCache.java @@ -385,6 +385,9 @@ private void updateQuotaFactors() { LOG.warn("Get table regions failed: {}", tableName, e); } tableMachineQuotaFactors.put(tableName, factor); + } else { + // TableName might have already been dropped (outdated) + tableMachineQuotaFactors.remove(tableName); } } } From 51001ecb3523450fe5ca59c109ad1a431a7238e0 Mon Sep 17 00:00:00 2001 From: Ke Han Date: Sat, 23 Sep 2023 15:01:49 +0000 Subject: [PATCH 3/3] spotless: fix format --- .../main/java/org/apache/hadoop/hbase/quotas/QuotaCache.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/QuotaCache.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/QuotaCache.java index 350b08a965fa..0f7b5e42e68b 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/QuotaCache.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/QuotaCache.java @@ -387,7 +387,7 @@ private void updateQuotaFactors() { tableMachineQuotaFactors.put(tableName, factor); } else { // TableName might have already been dropped (outdated) - tableMachineQuotaFactors.remove(tableName); + tableMachineQuotaFactors.remove(tableName); } } }