You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Guanghao Zhang (JIRA)" <ji...@apache.org> on 2015/05/14 05:53:59 UTC

[jira] [Created] (HBASE-13686) Fail to limit rate in RateLimiter

Guanghao Zhang created HBASE-13686:
--------------------------------------

             Summary: Fail to limit rate in RateLimiter
                 Key: HBASE-13686
                 URL: https://issues.apache.org/jira/browse/HBASE-13686
             Project: HBase
          Issue Type: Bug
    Affects Versions: 2.0.0, 1.1.0
            Reporter: Guanghao Zhang
            Priority: Minor


While using the patch in HBASE-11598 , I found that RateLimiter can't to limit the rate right.
{code} 
 /**
   * given the time interval, are there enough available resources to allow execution?
   * @param now the current timestamp
   * @param lastTs the timestamp of the last update
   * @param amount the number of required resources
   * @return true if there are enough available resources, otherwise false
   */
  public synchronized boolean canExecute(final long now, final long lastTs, final long amount) {
    return avail >= amount ? true : refill(now, lastTs) >= amount;
  }
{code}
When avail >= amount, avail can't be refill. But in the next time to call canExecute, lastTs maybe update. So avail will waste some time to refill. Even we use smaller rate than the limit, the canExecute will return false. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)