[ 
https://issues.apache.org/jira/browse/HBASE-30348?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18110767#comment-18110767
 ] 

Ray Mattingly edited comment on HBASE-30348 at 9/2/26 7:26 PM:
---------------------------------------------------------------

I'm working on [a 
draft|https://github.com/apache/hbase/compare/master...HubSpot:hbase:HBASE-30348-v2]
 that solves this by:
 * Allowing quotas against system tables, except for {{{}hbase:meta{}}}, 
{{{}hbase:quota{}}}, and {{{}hbase:namespace{}}}. Adding the namespace table is 
what fixes the immediate 2.x deadlock – {{TableNamespaceManager}} reads it 
during {{{}initClusterSchemaService{}}}, which runs before {{initQuotaManager}} 
creates {{{}hbase:quota{}}}.
 * Adding defense in depth for this genre of deadlock: 
{{QuotaCache#ensureInitialized}} will run the initial load on an executor, 
waiting on it for a configurable bounded duration rather than loading inline on 
the RPC handler. A request that waits out the timeout proceeds with default, 
unthrottled quota state because that's better than a deadlock and there's no 
way for this code to really be certain that the master is appropriately 
initialized.

Does that strategy sound reasonable?


was (Author: JIRAUSER286879):
I'm working on a draft that solves this by:

* Allowing quotas against system tables, except for {{hbase:meta}}, 
{{hbase:quota}}, and {{hbase:namespace}}. Adding the namespace table is what 
fixes the immediate 2.x deadlock -- {{TableNamespaceManager}} reads it during 
{{initClusterSchemaService}}, which runs before {{initQuotaManager}} creates 
{{hbase:quota}}.
* Adding defense in depth for this genre of deadlock: 
{{QuotaCache#ensureInitialized}} will run the initial load on an executor, 
waiting on it for a configurable bounded duration rather than loading inline on 
the RPC handler. A request that waits out the timeout proceeds with default, 
unthrottled quota state because that's better than a deadlock and there's no 
way for this code to really be certain that the master is appropriately 
initialized.

Does that strategy sound reasonable?

> Throttles should work for system tables (excluding quotas, meta)
> ----------------------------------------------------------------
>
>                 Key: HBASE-30348
>                 URL: https://issues.apache.org/jira/browse/HBASE-30348
>             Project: HBase
>          Issue Type: Improvement
>    Affects Versions: 2.6.7
>            Reporter: Ray Mattingly
>            Assignee: Ray Mattingly
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 4.0.0-alpha-1, 2.7.0, 3.1.0, 3.0.1, 2.6.8
>
>
> Right now throttles silently no-op for all system tables. Outside of the 
> quotas table itself, of course, and perhaps the meta table I don't think this 
> actually makes sense. We saw a pathologic build up of huge cells in 
> incremental backups tables, for example, and it resulted in significant IO 
> hotspots throughout our HBase clusters during backups and during bulk loads. 
> We will fix that backups bug separately, but we would also love to have 
> throttles in place on these backup system tables.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to