HBASE-21592 quota.addGetResult(r) throw NPE
Signed-off-by: huzheng <openinx@gmail.com>
This commit is contained in:
parent
049307c9a7
commit
bbf17e6149
|
@ -2322,7 +2322,8 @@ public class RSRpcServices implements HBaseRPCErrorHandler,
|
||||||
}
|
}
|
||||||
builder.setResult(pbr);
|
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);
|
quota.addGetResult(r);
|
||||||
}
|
}
|
||||||
return builder.build();
|
return builder.build();
|
||||||
|
|
|
@ -25,6 +25,7 @@ import org.apache.hadoop.hbase.client.Get;
|
||||||
import org.apache.hadoop.hbase.client.HTable;
|
import org.apache.hadoop.hbase.client.HTable;
|
||||||
import org.apache.hadoop.hbase.client.Put;
|
import org.apache.hadoop.hbase.client.Put;
|
||||||
import org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException;
|
import org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException;
|
||||||
|
import org.apache.hadoop.hbase.client.Table;
|
||||||
import org.apache.hadoop.hbase.security.User;
|
import org.apache.hadoop.hbase.security.User;
|
||||||
import org.apache.hadoop.hbase.testclassification.MediumTests;
|
import org.apache.hadoop.hbase.testclassification.MediumTests;
|
||||||
import org.apache.hadoop.hbase.util.Bytes;
|
import org.apache.hadoop.hbase.util.Bytes;
|
||||||
|
@ -486,6 +487,23 @@ public class TestQuotaThrottle {
|
||||||
assertEquals(30, doGets(30, tables[1]));
|
assertEquals(30, doGets(30, tables[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testTableExistsGetThrottle() throws Exception {
|
||||||
|
final Admin admin = TEST_UTIL.getHBaseAdmin();
|
||||||
|
|
||||||
|
// 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 HTable... tables) throws Exception {
|
private int doPuts(int maxOps, final HTable... tables) throws Exception {
|
||||||
int count = 0;
|
int count = 0;
|
||||||
try {
|
try {
|
||||||
|
|
Loading…
Reference in New Issue