We have

public class ThrottlingException extends QuotaExceededException
public class QuotaExceededException extends DoNotRetryIOException

Let the storage quota limits throw QuotaExceededException directly (based
on DNRIOE). That seems fine.

However,​ ​ThrottlingException is thrown as a result of a temporal quota,
so it is inappropriate for this to inherit from DNRIOE, it should inherit
IOException instead so the client is allowed to retry until successful, or
until the retry policy is exhausted.

We​ ​ are in a bit of a pickle because we've released with this inheritance
hierarchy, so to change it we will need a new minor, or we will want to
deprecate ThrottlingException and use a new exception class instead, one
which does not inherit from DNRIOE.



On Wed, Feb 7, 2018 at 8:23 AM, Stack <st...@duboce.net> wrote:

> QEE being a DNRIOE seems right on the face of it.
>
> But if throttling, a DNRIOE is inappropriate. Where you seeing a QEE in a
> throttling scenario Huaxiang?
>
> Thanks,
> S
>
>
> On Tue, Feb 6, 2018 at 4:56 PM, Huaxiang Sun <h...@cloudera.com> wrote:
>
> > Hi HBase devs,
> >
> >     I found that QuotaExceededException  is a DoNotRetryIOException,
> which
> > is a bit strange from user’s point of view.
> >     For rpc throttling, the exception is retryable and it tells app to
> > slow down and retry later.
> >
> >     Any thoughts?
> >
> >     Thanks,
> >     Huaxiang
>



-- 
Best regards,
Andrew

Words like orphans lost among the crosstalk, meaning torn from truth's
decrepit hands
   - A23, Crosstalk

Reply via email to