Skip to content

Commit 04826d1

Browse files
hanke580bbeaudreault
authored andcommitted
HBASE-28105 NPE in QuotaCache if Table is dropped from cluster (#5426)
Signed-off-by: Bryan Beaudreault <[email protected]>
1 parent 8d91cd2 commit 04826d1

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/QuotaCache.java

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -371,19 +371,24 @@ private void updateQuotaFactors() {
371371

372372
// Update table machine quota factors
373373
for (TableName tableName : tableQuotaCache.keySet()) {
374-
double factor = 1;
375-
try {
376-
long regionSize = tableRegionStatesCount.get(tableName).getOpenRegions();
377-
if (regionSize == 0) {
378-
factor = 0;
379-
} else {
380-
int localRegionSize = rsServices.getRegions(tableName).size();
381-
factor = 1.0 * localRegionSize / regionSize;
374+
if (tableRegionStatesCount.containsKey(tableName)) {
375+
double factor = 1;
376+
try {
377+
long regionSize = tableRegionStatesCount.get(tableName).getOpenRegions();
378+
if (regionSize == 0) {
379+
factor = 0;
380+
} else {
381+
int localRegionSize = rsServices.getRegions(tableName).size();
382+
factor = 1.0 * localRegionSize / regionSize;
383+
}
384+
} catch (IOException e) {
385+
LOG.warn("Get table regions failed: {}", tableName, e);
382386
}
383-
} catch (IOException e) {
384-
LOG.warn("Get table regions failed: {}", tableName, e);
387+
tableMachineQuotaFactors.put(tableName, factor);
388+
} else {
389+
// TableName might have already been dropped (outdated)
390+
tableMachineQuotaFactors.remove(tableName);
385391
}
386-
tableMachineQuotaFactors.put(tableName, factor);
387392
}
388393
}
389394
}

0 commit comments

Comments
 (0)