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 <40539150+starocean...@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-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org