This is an automated email from the ASF dual-hosted git repository. eldenmoon pushed a commit to branch timeout-future in repository https://gitbox.apache.org/repos/asf/doris.git
commit 6d4c490831a3ebd75cdd361d33189fb5decb200a Author: eldenmoon <[email protected]> AuthorDate: Thu Jul 6 16:24:44 2023 +0800 [Bug](point query) cancel future when meet timeout in PointQueryExec --- .../src/main/java/org/apache/doris/common/Config.java | 4 ++++ .../src/main/java/org/apache/doris/qe/PointQueryExec.java | 11 ++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java index e4a61788ec..dac63e6cd4 100644 --- a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java +++ b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java @@ -459,6 +459,10 @@ public class Config extends ConfigBase { "The timeout of RPC between FE and Broker, in milliseconds"}) public static int broker_timeout_ms = 10000; // 10s + @ConfField(description = {"主键高并发点查短路径超时时间。", + "The timeout of RPC for high concurrenty short circuit query"}) + public static int point_query_timeout_ms = 10000; // 10s + @ConfField(mutable = true, masterOnly = true, description = {"Insert load 的默认超时时间,单位是秒。", "Default timeout for insert load job, in seconds."}) public static int insert_load_default_timeout_second = 14400; // 4 hour diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/PointQueryExec.java b/fe/fe-core/src/main/java/org/apache/doris/qe/PointQueryExec.java index e62e849be0..e46c858c31 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/PointQueryExec.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/PointQueryExec.java @@ -63,7 +63,7 @@ public class PointQueryExec { private ArrayList<Expr> outputExprs; private DescriptorTable descriptorTable; private long tabletID = 0; - private long timeoutMs = 1000; // default 1s + private long timeoutMs = Config.point_query_timeout_ms; // default 10s private boolean isCancel = false; private boolean isBinaryProtocol = false; @@ -201,6 +201,11 @@ public class PointQueryExec { status.setStatus(Status.CANCELLED); return null; } + } catch (TimeoutException e) { + futureResponse.cancel(true); + LOG.warn("fetch result timeout {}", backend.getBrpcAdress()); + status.setStatus("query timeout"); + return null; } } } catch (RpcException e) { @@ -218,10 +223,6 @@ public class PointQueryExec { SimpleScheduler.addToBlacklist(backend.getId(), e.getMessage()); } return null; - } catch (TimeoutException e) { - LOG.warn("fetch result timeout {}", backend.getBrpcAdress()); - status.setStatus("query timeout"); - return null; } TStatusCode code = TStatusCode.findByValue(pResult.getStatus().getStatusCode()); if (code != TStatusCode.OK) { --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
