[ 
https://issues.apache.org/jira/browse/HBASE-19924?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16405499#comment-16405499
 ] 

huaxiang sun commented on HBASE-19924:
--------------------------------------

For Q1 and Q2, I will upload a new patch.

For Q3, the current design is that it needs to compensate the difference for 
estimated size and actual size. So it only needs size (not count, as the count 
is accurate).

For Q4, it is not an issue as all these size are the estimated one, so even for 
check-exist Get, the estimated size is non-0, though at the other hand, the 
check is not necessary.

> hbase rpc throttling does not work for multi() with request count rater.
> ------------------------------------------------------------------------
>
>                 Key: HBASE-19924
>                 URL: https://issues.apache.org/jira/browse/HBASE-19924
>             Project: HBase
>          Issue Type: Bug
>          Components: rpc
>    Affects Versions: 0.16.0, 1.2.6
>            Reporter: huaxiang sun
>            Assignee: huaxiang sun
>            Priority: Major
>         Attachments: HBASE-19924-master-v001.patch
>
>
> Basically, rpc throttling does not work for request count based rater for 
> multi. for the following code, when it calls limiter's checkQuota(), 
> numWrites/numReads is lost.
> {code:java}
> @Override
> public void checkQuota(int numWrites, int numReads, int numScans) throws 
> ThrottlingException {
>   writeConsumed = estimateConsume(OperationType.MUTATE, numWrites, 100);
>   readConsumed = estimateConsume(OperationType.GET, numReads, 100);
>   readConsumed += estimateConsume(OperationType.SCAN, numScans, 1000);
>   writeAvailable = Long.MAX_VALUE;
>   readAvailable = Long.MAX_VALUE;
>   for (final QuotaLimiter limiter : limiters) {
>     if (limiter.isBypass()) continue;
>     limiter.checkQuota(writeConsumed, readConsumed);
>     readAvailable = Math.min(readAvailable, limiter.getReadAvailable());
>     writeAvailable = Math.min(writeAvailable, limiter.getWriteAvailable());
>   }
>   for (final QuotaLimiter limiter : limiters) {
>     limiter.grabQuota(writeConsumed, readConsumed);
>   }
> }{code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to