[ https://issues.apache.org/jira/browse/HBASE-20588?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16487811#comment-16487811 ]
Nihal Jain commented on HBASE-20588: ------------------------------------ {quote}have I missed the reason why SpaceQuotaSnapshots are not being reported to the SpaceQuotaRefresherChore for tables that still exist? {quote} Isn't this because removal of quota from a table would remove entries for that table from {{hbase:quota}}. Now, the {{newSnapshots}} would have no entry for the above-mentioned table, as no row in {{hbase:quota}} corresponding to it. {code:java} // Read the new snapshots from the quota table final Map<TableName, SpaceQuotaSnapshot> newSnapshots = fetchSnapshotsFromQuotaTable(); if (LOG.isTraceEnabled()) { LOG.trace(currentSnapshots.size() + " table quota snapshots are collected, " + "read " + newSnapshots.size() + " from the quota table."); } {code} Now, since no entry exists in {{newSnapshots.entrySet()}} for the table from which we removed quota, we will never refresh the enforcedPolicies for that table. {code:java} // Iterate over each new quota snapshot for (Entry<TableName, SpaceQuotaSnapshot> entry : newSnapshots.entrySet()) { final TableName tableName = entry.getKey(); . . } {code} I am not sure whether this is what you asked. Anyways I explained the issue. :) > Space quota change after quota violation doesn't seem to take in effect > ----------------------------------------------------------------------- > > Key: HBASE-20588 > URL: https://issues.apache.org/jira/browse/HBASE-20588 > Project: HBase > Issue Type: Bug > Components: regionserver > Affects Versions: 3.0.0, 2.0.0 > Reporter: Biju Nair > Assignee: Nihal Jain > Priority: Major > Fix For: 3.0.0 > > Attachments: HBASE-20588.master.001.patch, > HBASE-20588.master.001.patch, HBASE-20588.master.002.patch > > > Steps followed > - Through {{hbase shell}} > {noformat} > set_quota TYPE => SPACE, TABLE => 'TestTable', LIMIT => '2M', POLICY => > NO_INSERTS{noformat} > - Run {{PE}} until the quota is reached > {noformat} > hbase org.apache.hadoop.hbase.PerformanceEvaluation --nomapred > --rows=20000000 sequentialWrite 1{noformat} > - Through {{HBase}} shell > {noformat} > set_quota TYPE => SPACE, TABLE => 'TestTable', LIMIT => NONE{noformat} > - Through {{HBase}} shell verify the effective Quotas > {noformat} > > list_quotas > OWNER QUOTAS > > > 0 row(s) > Took 0.0365 seconds{noformat} > - Wait for some time (at least 5 mins) and try to add data to the table > {noformat} > > put 'TestTable','r1','info0:0','v1' > ERROR: org.apache.hadoop.hbase.quotas.SpaceLimitingException: NO_INSERTS Puts > are disallowed due to a space quota. > at > org.apache.hadoop.hbase.quotas.policies.NoInsertsViolationPolicyEnforcement.check(NoInsertsViolationPolicyEnforcement.java:47){noformat} > To resolve the issue, {{RSes}} need to be restarted which points to in memory > data not getting reset. -- This message was sent by Atlassian JIRA (v7.6.3#76005)