This is an automated email from the ASF dual-hosted git repository.
dataroaring pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new a801172ddc0 [fix](readconsistency) avoid table not exist error (#37593)
a801172ddc0 is described below
commit a801172ddc0cb7c0542867b884131bbcfaf93a5b
Author: Yongqiang YANG <[email protected]>
AuthorDate: Thu Jul 11 11:05:44 2024 +0800
[fix](readconsistency) avoid table not exist error (#37593)
Query following createting table would throw table not exist error.
For example.
t1: client issue create table to master fe
t2: client issue query sql to observer fe, the query would fail due to
not exist table in plan phase.
t3: observer fe receive editlog creating the table from the master fe
After the pr:
query at t2 would wait until latest edit log is received from master fe
in the observer fe.
---
.../java/org/apache/doris/qe/StmtExecutor.java | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
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 6eaeb559b73..fcd0d25a130 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
@@ -725,6 +725,13 @@ public class StmtExecutor {
return;
}
}
+
+ // Query following createting table would throw table not exist
error.
+ // For example.
+ // t1: client issues create table to master fe
+ // t2: client issues query sql to observer fe, the query would
fail due to not exist table in plan phase.
+ // t3: observer fe receive editlog creating the table from the
master fe
+ syncJournalIfNeeded();
try {
((Command) logicalPlan).run(context, this);
} catch (MustFallbackException e) {
@@ -759,6 +766,13 @@ public class StmtExecutor {
} else {
context.getState().setIsQuery(true);
// create plan
+ // Query following createting table would throw table not exist
error.
+ // For example.
+ // t1: client issues create table to master fe
+ // t2: client issues query sql to observer fe, the query would
fail due to not exist table in
+ // plan phase.
+ // t3: observer fe receive editlog creating the table from the
master fe
+ syncJournalIfNeeded();
planner = new NereidsPlanner(statementContext);
if
(context.getSessionVariable().isEnableMaterializedViewRewrite()) {
planner.addHook(InitMaterializationContextHook.INSTANCE);
@@ -805,7 +819,6 @@ public class StmtExecutor {
private void handleQueryWithRetry(TUniqueId queryId) throws Exception {
// queue query here
- syncJournalIfNeeded();
int retryTime = Config.max_query_retry_time;
for (int i = 0; i <= retryTime; i++) {
try {
@@ -955,6 +968,13 @@ public class StmtExecutor {
}
}
} else {
+ // Query following createting table would throw table not
exist error.
+ // For example.
+ // t1: client issues create table to master fe
+ // t2: client issues query sql to observer fe, the query would
fail due to not exist table
+ // in plan phase.
+ // t3: observer fe receive editlog creating the table from the
master fe
+ syncJournalIfNeeded();
analyzer = new Analyzer(context.getEnv(), context);
parsedStmt.analyze(analyzer);
parsedStmt.checkPriv();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]