You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "zhengsicheng (Jira)" <ji...@apache.org> on 2021/03/05 07:53:00 UTC

[jira] [Comment Edited] (HBASE-25634) The client frequently exceeds the quota, which causes the meta table scan to be too high

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

zhengsicheng edited comment on HBASE-25634 at 3/5/21, 7:52 AM:
---------------------------------------------------------------

[~sakthi] review code thank you!


was (Author: zhengsicheng):
[~sakthi] review code thank you1

> The client frequently exceeds the quota, which causes the meta table scan to be too high
> ----------------------------------------------------------------------------------------
>
>                 Key: HBASE-25634
>                 URL: https://issues.apache.org/jira/browse/HBASE-25634
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 2.3.4
>            Reporter: zhengsicheng
>            Assignee: zhengsicheng
>            Priority: Minor
>         Attachments: image-2021-03-05-12-00-33-522.png, image-2021-03-05-12-01-08-769.png
>
>
>  When the client scan operation, the server frequently returns RpcThrottlingException, which will cause the meta table request to become high.
>  
>  /hbase-client/src/main/java/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.java
> {code:java}
> // code placeholder
> @Override
> public T callWithRetries(RetryingCallable<T> callable, int callTimeout)
> throws IOException, RuntimeException {
>   List<RetriesExhaustedException.ThrowableWithExtraContext> exceptions = new ArrayList<>();
>   tracker.start();
>   context.clear();
>   for (int tries = 0;; tries++) {
>     long expectedSleep;
>     try {
>       // bad cache entries are cleared in the call to RetryingCallable#throwable() in catch block
>       // callable.prepare() reload force reload of server location
>       callable.prepare(tries != 0);
>       interceptor.intercept(context.prepare(callable, tries));
>       return callable.call(getTimeout(callTimeout));
>     } catch (PreemptiveFastFailException e) {
>       throw e;
>     } catch (Throwable t) {
>       ExceptionUtil.rethrowIfInterrupt(t);
>       Throwable cause = t.getCause();
>       if (cause instanceof DoNotRetryIOException) {
>         // Fail fast
>         throw (DoNotRetryIOException) cause;
>       }
>       // translateException throws exception when should not retry: i.e. when request is bad.
>       interceptor.handleFailure(context, t);
>       t = translateException(t);
> {code}
>  
>  
>  
> !image-2021-03-05-12-00-33-522.png!
> !image-2021-03-05-12-01-08-769.png!
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)