This is an automated email from the ASF dual-hosted git repository.
morrysnow pushed a commit to branch branch-3.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-3.1 by this push:
new 625f83f6093 branch-3.1: [fix](config) fix admin set all frontends
config #55016 (#55072)
625f83f6093 is described below
commit 625f83f609388668ced03146b46fb363e6bdd055
Author: camby <[email protected]>
AuthorDate: Thu Aug 21 08:39:49 2025 +0800
branch-3.1: [fix](config) fix admin set all frontends config #55016 (#55072)
pick #55016
---
.../apache/doris/analysis/AdminSetConfigStmt.java | 2 +-
.../main/java/org/apache/doris/catalog/Env.java | 5 +++--
.../main/java/org/apache/doris/qe/DdlExecutor.java | 6 +++++-
.../java/org/apache/doris/qe/StmtExecutor.java | 2 +-
.../doris/analysis/AdminSetConfigStmtTest.java | 23 ++++++++++++++++++----
5 files changed, 29 insertions(+), 9 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminSetConfigStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminSetConfigStmt.java
index b197c6c2bca..6695a9e9846 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminSetConfigStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AdminSetConfigStmt.java
@@ -97,7 +97,7 @@ public class AdminSetConfigStmt extends DdlStmt implements
NotFallbackInParser {
public OriginStatement getLocalSetStmt() {
OriginStatement stmt = this.getOrigStmt();
Object[] keyArr = configs.keySet().toArray();
- String sql = String.format("ADMIN SET FRONTEND CONFIG (\"%s\" =
\"%s\");",
+ String sql = String.format("ADMIN SET %s CONFIG (\"%s\" = \"%s\");",
applyToAll ? "ALL FRONTENDS" : "FRONTEND",
keyArr[0].toString(), configs.get(keyArr[0].toString()));
return new OriginStatement(sql, stmt.idx);
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java
b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java
index 4cf16959d24..d2a08ddb657 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java
@@ -6136,7 +6136,7 @@ public class Env {
}
}
- public void setConfig(AdminSetConfigStmt stmt) throws Exception {
+ public void setConfig(AdminSetConfigStmt stmt, boolean isProxy) throws
Exception {
Map<String, String> configs = stmt.getConfigs();
Preconditions.checkState(configs.size() == 1);
@@ -6148,7 +6148,8 @@ public class Env {
}
}
- if (stmt.isApplyToAll()) {
+ // if this request already come from other Frontend, do not forward it
again
+ if (!isProxy && stmt.isApplyToAll()) {
for (Frontend fe : Env.getCurrentEnv().getFrontends(null /* all
*/)) {
if (!fe.isAlive() ||
fe.getHost().equals(Env.getCurrentEnv().getSelfNode().getHost())) {
continue;
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/DdlExecutor.java
b/fe/fe-core/src/main/java/org/apache/doris/qe/DdlExecutor.java
index 03bc3908cf9..e4737e81970 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/DdlExecutor.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/DdlExecutor.java
@@ -161,6 +161,10 @@ public class DdlExecutor {
* Execute ddl.
**/
public static void execute(Env env, DdlStmt ddlStmt) throws Exception {
+ execute(env, ddlStmt, false);
+ }
+
+ public static void execute(Env env, DdlStmt ddlStmt, boolean isProxy)
throws Exception {
checkDdlStmtSupported(ddlStmt);
if (ddlStmt instanceof CreateDbStmt) {
env.createDb((CreateDbStmt) ddlStmt);
@@ -297,7 +301,7 @@ public class DdlExecutor {
} else if (ddlStmt instanceof AdminCompactTableStmt) {
env.compactTable((AdminCompactTableStmt) ddlStmt);
} else if (ddlStmt instanceof AdminSetConfigStmt) {
- env.setConfig((AdminSetConfigStmt) ddlStmt);
+ env.setConfig((AdminSetConfigStmt) ddlStmt, isProxy);
} else if (ddlStmt instanceof AdminSetTableStatusStmt) {
env.setTableStatus((AdminSetTableStatusStmt) ddlStmt);
} else if (ddlStmt instanceof CreateFileStmt) {
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 f1ebd8a3156..2ac7467280e 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
@@ -3168,7 +3168,7 @@ public class StmtExecutor {
private void handleDdlStmt() {
try {
- DdlExecutor.execute(context.getEnv(), (DdlStmt) parsedStmt);
+ DdlExecutor.execute(context.getEnv(), (DdlStmt) parsedStmt,
isProxy);
if (!(parsedStmt instanceof AnalyzeStmt)) {
context.getState().setOk();
}
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/analysis/AdminSetConfigStmtTest.java
b/fe/fe-core/src/test/java/org/apache/doris/analysis/AdminSetConfigStmtTest.java
index a8dce790f65..95bf073929a 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/analysis/AdminSetConfigStmtTest.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/analysis/AdminSetConfigStmtTest.java
@@ -39,7 +39,8 @@ public class AdminSetConfigStmtTest extends TestWithFeService
{
public void testNormal() throws Exception {
String stmt = "admin set frontend
config(\"alter_table_timeout_second\" = \"60\");";
AdminSetConfigStmt adminSetConfigStmt = (AdminSetConfigStmt)
parseAndAnalyzeStmt(stmt);
- Env.getCurrentEnv().setConfig(adminSetConfigStmt);
+ Env.getCurrentEnv().setConfig(adminSetConfigStmt, false);
+
Assertions.assertTrue(adminSetConfigStmt.getLocalSetStmt().originStmt.startsWith("ADMIN
SET FRONTEND CONFIG"));
}
@Test
@@ -47,7 +48,7 @@ public class AdminSetConfigStmtTest extends TestWithFeService
{
String stmt = "admin set frontend config(\"unknown_config\" =
\"unknown\");";
AdminSetConfigStmt adminSetConfigStmt = (AdminSetConfigStmt)
parseAndAnalyzeStmt(stmt);
DdlException exception = Assertions.assertThrows(DdlException.class,
- () -> Env.getCurrentEnv().setConfig(adminSetConfigStmt));
+ () -> Env.getCurrentEnv().setConfig(adminSetConfigStmt,
false));
Assertions.assertEquals("errCode = 2, detailMessage = Config
'unknown_config' does not exist",
exception.getMessage());
}
@@ -66,14 +67,14 @@ public class AdminSetConfigStmtTest extends
TestWithFeService {
boolean enableMtmv = Config.enable_mtmv;
String stmt = "admin set frontend config('enable_mtmv' = '" +
String.valueOf(!enableMtmv) + "');";
AdminSetConfigStmt adminSetConfigStmt = (AdminSetConfigStmt)
parseAndAnalyzeStmt(stmt);
- Env.getCurrentEnv().setConfig(adminSetConfigStmt);
+ Env.getCurrentEnv().setConfig(adminSetConfigStmt, false);
Assert.assertNotEquals(enableMtmv, Config.enable_mtmv);
// 2. set with experimental
enableMtmv = Config.enable_mtmv;
stmt = "admin set frontend config('experimental_enable_mtmv' = '" +
String.valueOf(!enableMtmv) + "');";
adminSetConfigStmt = (AdminSetConfigStmt) parseAndAnalyzeStmt(stmt);
- Env.getCurrentEnv().setConfig(adminSetConfigStmt);
+ Env.getCurrentEnv().setConfig(adminSetConfigStmt, false);
Assert.assertNotEquals(enableMtmv, Config.enable_mtmv);
// 3. show config
@@ -89,5 +90,19 @@ public class AdminSetConfigStmtTest extends
TestWithFeService {
results = ConfigBase.getConfigInfo(matcher);
Assert.assertEquals(num, results.size());
}
+
+ @Test
+ public void testSetAllFrontendsConfig() throws Exception {
+ String stmt = "admin set all frontends
config(\"alter_table_timeout_second\" = \"77\");";
+ AdminSetConfigStmt adminSetConfigStmt = (AdminSetConfigStmt)
parseAndAnalyzeStmt(stmt);
+
+ Assertions.assertTrue(adminSetConfigStmt.isApplyToAll());
+ Assertions.assertEquals(adminSetConfigStmt.getRedirectStatus(),
RedirectStatus.NO_FORWARD);
+ Assertions.assertTrue(
+
adminSetConfigStmt.getLocalSetStmt().originStmt.startsWith("ADMIN SET ALL
FRONTENDS CONFIG"));
+
+ Env.getCurrentEnv().setConfig(adminSetConfigStmt, true);
+ Assertions.assertEquals(77, Config.alter_table_timeout_second);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]