HBASE-21592 quota.addGetResult(r) throw NPE

Signed-off-by: huzheng <openinx@gmail.com>
This commit is contained in:
xuqinya 2018-12-18 08:19:47 +08:00 committed by huzheng
parent 1971d02e72
commit f78284685f
2 changed files with 19 additions and 1 deletions

View File

@ -2571,7 +2571,8 @@ public class RSRpcServices implements HBaseRPCErrorHandler,
}
builder.setResult(pbr);
}
if (r != null) {
//r.cells is null when an table.exists(get) call
if (r != null && r.rawCells() != null) {
quota.addGetResult(r);
}
return builder.build();

View File

@ -553,6 +553,23 @@ public class TestQuotaThrottle {
triggerTableCacheRefresh(true, TABLE_NAMES[0]);
}
@Test
public void testTableExistsGetThrottle() throws Exception {
final Admin admin = TEST_UTIL.getAdmin();
// Add throttle quota
admin.setQuota(QuotaSettingsFactory.throttleTable(TABLE_NAMES[0],
ThrottleType.REQUEST_NUMBER, 100, TimeUnit.MINUTES));
triggerTableCacheRefresh(false, TABLE_NAMES[0]);
Table table = TEST_UTIL.getConnection().getTable(TABLE_NAMES[0]);
// An exists call when having throttle quota
table.exists(new Get(Bytes.toBytes("abc")));
admin.setQuota(QuotaSettingsFactory.unthrottleTable(TABLE_NAMES[0]));
triggerTableCacheRefresh(true, TABLE_NAMES[0]);
}
private int doPuts(int maxOps, final Table... tables) throws Exception {
return doPuts(maxOps, -1, tables);
}