Repository: hbase Updated Branches: refs/heads/branch-1.4 b38c25968 -> a9db7cf6f
HBASE-21592 quota.addGetResult(r) throw NPE Signed-off-by: huzheng <open...@gmail.com> Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/a9db7cf6 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/a9db7cf6 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/a9db7cf6 Branch: refs/heads/branch-1.4 Commit: a9db7cf6f019787d52d48cdf0eb6c6adb762ed6b Parents: b38c259 Author: xuqinya <xuqinya2...@163.com> Authored: Tue Dec 18 08:41:04 2018 +0800 Committer: huzheng <open...@gmail.com> Committed: Tue Dec 18 18:46:06 2018 +0800 ---------------------------------------------------------------------- .../hadoop/hbase/regionserver/RSRpcServices.java | 3 ++- .../hadoop/hbase/quotas/TestQuotaThrottle.java | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/a9db7cf6/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java index f88089f..43e08f6 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java @@ -2284,7 +2284,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(); http://git-wip-us.apache.org/repos/asf/hbase/blob/a9db7cf6/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestQuotaThrottle.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestQuotaThrottle.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestQuotaThrottle.java index 4605663..045ec1a 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestQuotaThrottle.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestQuotaThrottle.java @@ -25,6 +25,7 @@ import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.Put; 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.testclassification.MediumTests; import org.apache.hadoop.hbase.util.Bytes; @@ -484,6 +485,23 @@ public class TestQuotaThrottle { 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 { int count = 0; try {