[ https://issues.apache.org/jira/browse/HBASE-29479?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Charles Connell resolved HBASE-29479. ------------------------------------- Resolution: Fixed > QuotaCache is not correctly populated until runs of QuotaRefresherChore > ----------------------------------------------------------------------- > > Key: HBASE-29479 > URL: https://issues.apache.org/jira/browse/HBASE-29479 > Project: HBase > Issue Type: Improvement > Reporter: Charles Connell > Assignee: Charles Connell > Priority: Minor > Labels: pull-request-available > Fix For: 2.7.0, 3.0.0-beta-2, 2.6.4 > > > When asked for a QuotaLimiter for a given user, the QuotaCache checks if that > user's quota state is cached. If it is, it returns a QuotaLimiter based on > the cached information. If not, it inserts default quota state into the > cache, and returns a default QuotaLimiter. On the next run of the > QuotaRefresherChore, it looks in the {{hbase:quota}} table for the quota > settings for every user in the cache. The consequence of this is: from when > the QuotaCache is first asked about a user, until the next run of > QuotaRefresherChore, the QuotaLimiters for that user are wrong. > I think it's unacceptable for QuotaCache to return incorrect information. I > can see from a code comment that it was implemented this was as a performance > optimization, to avoid doing a Get on the quota table in the query handler > path. However, the performance consequences of not enforcing quotas can be a > lot worse that a few Gets. > In this ticket I'm adding logic to QuotaCache so it immediately fetches quota > information for a user from the quota table any time that user is not in its > cache. -- This message was sent by Atlassian Jira (v8.20.10#820010)