Skip to content

Commit 897fcf8

Browse files
hanke580bbeaudreault
authored andcommitted
HBASE-28105 NPE in QuotaCache if Table is dropped from cluster (apache#5426)
Signed-off-by: Bryan Beaudreault <bbeaudreault@apache.org>
1 parent c602eea commit 897fcf8

1 file changed

Lines changed: 16 additions & 11 deletions

File tree

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
@@ -373,19 +373,24 @@ private void updateQuotaFactors() {
373373

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

0 commit comments

Comments
 (0)