diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/RateLimiter.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/RateLimiter.java index 45089e8..af69d0b 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/RateLimiter.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/RateLimiter.java @@ -170,9 +170,10 @@ public abstract class RateLimiter { * @param amount the number of units to consume */ public synchronized void consume(final long amount) { - this.avail -= amount; - if (this.avail < 0) { - this.avail = 0; + if (Long.MAX_VALUE - avail >= -amount) { + this.avail = Math.max(0, avail - amount); + } else { + this.avail = Long.MAX_VALUE; } }