You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Charles Connell (Jira)" <ji...@apache.org> on 2024/08/07 16:43:00 UTC
[jira] [Updated] (HBASE-28770) Pass partial results from AggregateImplementation when quotas are exceeded
[ https://issues.apache.org/jira/browse/HBASE-28770?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Charles Connell updated HBASE-28770:
------------------------------------
Description:
Currently there is a gap in the coverage of HBase's quota-based workload throttling. Requests send by {{[Async]AggregationClient}} reach {{AggregateImplementation}}. This then executes Scans in a way that bypasses the quota system. We see issues with this at Hubspot where clusters suffer under this load and we don't have a good way to protect them.
In this ticket I'm teaching {{AggregateImplementation}} to optionally stop scanning when a throttle is violated, and send back just the results it has accumulated so far. In addition, it will send back a row key to {{AsyncAggregationClient}}. When the client gets a response with a row key, it will sleep in order to satisfy the throttle, and then send a new request with a scan starting at that row key. This will have the effect of continuing the work where the last request stopped.
This feature will be unconditionally enabled by {{AsyncAggregationClient}} once this ticket is finished. {{AggregateImplementation}} will not assume that clients support partial results, however, so it can keep supporting older clients. For clients that do not support partial results, throttles will not be respecting, and results will always be complete.
This feature was [first proposed on the mailing list|https://lists.apache.org/thread/1vqnxb71z7swq2cogz4qg3cn6b10xp4v].
was:
Currently there is a gap in the coverage of HBase's quota-based workload throttling. Requests send by {{[Async]AggregationClient}} reach {{AggregateImplementation}}. This then executes Scans in a way that bypasses the quota system. We see issues with this at Hubspot where clusters suffer under this load and we don't have a good way to protect them.
In this ticket I'm teaching {{AggregateImplementation}} to optionally stop scanning when a throttle is violated, and send back just the results it has accumulated so far. In addition, it will send back a row key to {{AsyncAggregationClient}}. When the client gets a response with a row key, it will sleep in order to satisfy the throttle, and then send a new request with a scan starting at that row key. This will have the effect of continuing the work where the last request stopped.
This feature will be unconditionally enabled by {{AsyncAggregationClient}} once this ticket is finished. {{AggregateImplementation}} will not assume that clients support partial results, however, so it can keep supporting older clients. For clients that do not support partial results, throttles will not be respecting, and results will always be complete.
> Pass partial results from AggregateImplementation when quotas are exceeded
> --------------------------------------------------------------------------
>
> Key: HBASE-28770
> URL: https://issues.apache.org/jira/browse/HBASE-28770
> Project: HBase
> Issue Type: Improvement
> Reporter: Charles Connell
> Assignee: Charles Connell
> Priority: Major
>
> Currently there is a gap in the coverage of HBase's quota-based workload throttling. Requests send by {{[Async]AggregationClient}} reach {{AggregateImplementation}}. This then executes Scans in a way that bypasses the quota system. We see issues with this at Hubspot where clusters suffer under this load and we don't have a good way to protect them.
> In this ticket I'm teaching {{AggregateImplementation}} to optionally stop scanning when a throttle is violated, and send back just the results it has accumulated so far. In addition, it will send back a row key to {{AsyncAggregationClient}}. When the client gets a response with a row key, it will sleep in order to satisfy the throttle, and then send a new request with a scan starting at that row key. This will have the effect of continuing the work where the last request stopped.
> This feature will be unconditionally enabled by {{AsyncAggregationClient}} once this ticket is finished. {{AggregateImplementation}} will not assume that clients support partial results, however, so it can keep supporting older clients. For clients that do not support partial results, throttles will not be respecting, and results will always be complete.
> This feature was [first proposed on the mailing list|https://lists.apache.org/thread/1vqnxb71z7swq2cogz4qg3cn6b10xp4v].
--
This message was sent by Atlassian Jira
(v8.20.10#820010)