[ https://issues.apache.org/jira/browse/HBASE-13686?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ashish Singhi updated HBASE-13686: ---------------------------------- Fix Version/s: 1.1.1 1.2.0 2.0.0 Status: Patch Available (was: Open) > 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: 1.1.0, 2.0.0 > Reporter: Guanghao Zhang > Assignee: Ashish Singhi > Priority: Minor > Fix For: 2.0.0, 1.2.0, 1.1.1 > > Attachments: HBASE-13686.patch > > > 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)