Hi folks,

I am considering contributing a PR that will allow the
AggregationClient+AggregateImplementation coprocessor to respect quota
throttling during its operations, or something in that spirit. I want
to gather input from the community on your thoughts about this. In
particular here are some questions:

1. Is this idea useful enough to be accepted as a contribution?
2. Would you prefer a change to the existing coprocessor, or a new coprocessor?
3. One way to accomplish this is for the coprocessor endpoint to
return a partial result to the client each time it encounters an
RpcThrottleException. The client would then sleep and send a new
request, repeatedly, until the partial results cumulatively
represented the full scan it wanted. Another way to accomplish this is
for the coprocessor to sleep on the server side each time it
encounters an RpcThrottleException, and return a single complete
result. There are pros and cons to each of these approaches. I don't
believe there is prior art for either partial results or
server-side-sleeps in HBase, so both ideas feel awkward to me. What do
you think?
4. If we go with the "partial results" idea, this seems hard to
accomplish in an async client. Does anyone have an example of how to
cleanly encapsulate a multi-request-response cycle of async requests
inside a CompletableFuture? I wonder if this is maybe not possible.

Thanks for your time.
Charles

Reply via email to