You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by st...@apache.org on 2024/09/14 02:02:13 UTC
(doris) branch branch-2.0 updated: [fix](nereids)let query be able to forwarded to master (#40797)
This is an automated email from the ASF dual-hosted git repository.
starocean999 pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push:
new 4818ba02777 [fix](nereids)let query be able to forwarded to master (#40797)
4818ba02777 is described below
commit 4818ba02777b113f674909e07d77e86bc8e410ae
Author: starocean999 <40...@users.noreply.github.com>
AuthorDate: Sat Sep 14 10:02:04 2024 +0800
[fix](nereids)let query be able to forwarded to master (#40797)
## Proposed changes
pick from master https://github.com/apache/doris/pull/40119
<!--Describe your changes.-->
---
.../main/java/org/apache/doris/qe/StmtExecutor.java | 21 +++++++++++++++++++++
.../doris/nereids/preprocess/SelectHintTest.java | 6 ++++++
2 files changed, 27 insertions(+)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java
index 8d56271ac4f..02b0872fe6b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java
@@ -628,6 +628,27 @@ public class StmtExecutor {
}
} else {
context.getState().setIsQuery(true);
+ if (isForwardToMaster()) {
+ // some times the follower's meta data is out of date.
+ // so we need forward the query to master until the meta data is sync with master
+ if (context.getCommand() == MysqlCommand.COM_STMT_PREPARE) {
+ throw new UserException("Forward master command is not supported for prepare statement");
+ }
+ if (isProxy) {
+ // This is already a stmt forwarded from other FE.
+ // If we goes here, means we can't find a valid Master FE(some error happens).
+ // To avoid endless forward, throw exception here.
+ throw new NereidsException(new UserException("The statement has been forwarded to master FE("
+ + Env.getCurrentEnv().getSelfNode().getHost() + ") and failed to execute"
+ + " because Master FE is not ready. You may need to check FE's status"));
+ }
+ redirectStatus = RedirectStatus.NO_FORWARD;
+ forwardToMaster();
+ if (masterOpExecutor != null && masterOpExecutor.getQueryId() != null) {
+ context.setQueryId(masterOpExecutor.getQueryId());
+ }
+ return;
+ }
if (context.getSessionVariable().enableProfile) {
ConnectContext.get().setStatsErrorEstimator(new StatsErrorEstimator());
}
diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/preprocess/SelectHintTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/preprocess/SelectHintTest.java
index f548a499cad..62965ac27b3 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/nereids/preprocess/SelectHintTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/preprocess/SelectHintTest.java
@@ -47,6 +47,12 @@ public class SelectHintTest {
return ctx;
}
};
+ new MockUp<Env>() {
+ @Mock
+ public boolean isMaster() {
+ return true;
+ }
+ };
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org