huaxiang sun created HBASE-19924:
------------------------------------

             Summary: 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: 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.
{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