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)