huaxiang sun created HBASE-19924:

             Summary: hbase rpc throttling does not work for multi() with 
request count rater.
                 Key: HBASE-19924
             Project: HBase
          Issue Type: Bug
          Components: rpc
    Affects Versions: 1.2.6, 2.0
            Reporter: huaxiang sun
            Assignee: huaxiang sun

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.

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);

This message was sent by Atlassian JIRA

Reply via email to