Details
Description
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.
@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); } }
Attachments
Attachments
Issue Links
- is duplicated by
-
HBASE-20468 RPC quota requests ineffective due to not counting multi-actions
- Resolved