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]

Reply via email to