This is an automated email from the ASF dual-hosted git repository. morrysnow pushed a commit to branch branch-3.0 in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-3.0 by this push: new 047efd7f4ce [opt](variable) force update some variable by variable version (#41607) (#43405) 047efd7f4ce is described below commit 047efd7f4cee6fc0891e79ed5c62f603d10bd1b4 Author: morrySnow <101034200+morrys...@users.noreply.github.com> AuthorDate: Thu Nov 7 16:39:32 2024 +0800 [opt](variable) force update some variable by variable version (#41607) (#43405) pick from master #41607 variable version: 000-100: doris-2.0.x 100-200: doris-2.1.x 200-300: doris-3.0.x update variables 000: nereids_timeout_second = 30 if original value is 5 100: enable_nereids_dml = true enable_nereids_dml_with_pipeline = true enable_nereids_planner = true enable_fallback_to_original_planner = true enable_pipeline_x_engine = true 200: enable_fallback_to_original_planner = false --- .../main/java/org/apache/doris/catalog/Env.java | 1 + .../org/apache/doris/common/util/DocGenerator.java | 6 ++- .../java/org/apache/doris/qe/GlobalVariable.java | 9 ++++ .../java/org/apache/doris/qe/SessionVariable.java | 3 +- .../main/java/org/apache/doris/qe/VariableMgr.java | 51 +++++++++++++++++++++- 5 files changed, 65 insertions(+), 5 deletions(-) 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 dcc32d8276f..26c3cc1b1b4 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 @@ -1596,6 +1596,7 @@ public class Env { // Set initial root password if master FE first time launch. auth.setInitialRootPassword(Config.initial_root_password); } else { + VariableMgr.forceUpdateVariables(); if (journalVersion <= FeMetaVersion.VERSION_114) { // if journal version is less than 114, which means it is upgraded from version before 2.0. // When upgrading from 1.2 to 2.0, diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/util/DocGenerator.java b/fe/fe-core/src/main/java/org/apache/doris/common/util/DocGenerator.java index c0a544d825d..003dcdcf598 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/common/util/DocGenerator.java +++ b/fe/fe-core/src/main/java/org/apache/doris/common/util/DocGenerator.java @@ -256,8 +256,10 @@ public class DocGenerator { } sb.append("\n\n"); } - sb.append(VAR_READ_ONLY[lang.idx]).append("`").append(varAttr.flag() == VariableMgr.READ_ONLY).append("`\n\n"); - sb.append(VAR_GLOBAL_ONLY[lang.idx]).append("`").append(varAttr.flag() == VariableMgr.GLOBAL).append("`\n\n"); + sb.append(VAR_READ_ONLY[lang.idx]).append("`") + .append((varAttr.flag() & VariableMgr.READ_ONLY) != 0).append("`\n\n"); + sb.append(VAR_GLOBAL_ONLY[lang.idx]).append("`") + .append((varAttr.flag() & VariableMgr.GLOBAL) != 0).append("`\n\n"); return sb.toString(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/GlobalVariable.java b/fe/fe-core/src/main/java/org/apache/doris/qe/GlobalVariable.java index b449a4bc8e9..c7e226438f8 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/GlobalVariable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/GlobalVariable.java @@ -33,6 +33,12 @@ import java.util.List; // NOTE: If you want access your variable safe, please hold VariableMgr's lock before access. public final class GlobalVariable { + public static final int VARIABLE_VERSION_0 = 0; + public static final int VARIABLE_VERSION_100 = 100; + public static final int VARIABLE_VERSION_200 = 200; + public static final int CURRENT_VARIABLE_VERSION = VARIABLE_VERSION_200; + public static final String VARIABLE_VERSION = "variable_version"; + public static final String VERSION_COMMENT = "version_comment"; public static final String VERSION = "version"; public static final String LOWER_CASE_TABLE_NAMES = "lower_case_table_names"; @@ -69,6 +75,9 @@ public final class GlobalVariable { public static final String ENABLE_FETCH_ICEBERG_STATS = "enable_fetch_iceberg_stats"; + @VariableMgr.VarAttr(name = VARIABLE_VERSION, flag = VariableMgr.INVISIBLE + | VariableMgr.READ_ONLY | VariableMgr.GLOBAL) + public static int variableVersion = CURRENT_VARIABLE_VERSION; @VariableMgr.VarAttr(name = VERSION_COMMENT, flag = VariableMgr.READ_ONLY) public static String versionComment = "Doris version " diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java index 24168b27bad..50a3dbf10f9 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java @@ -1518,7 +1518,7 @@ public class SessionVariable implements Serializable, Writable { @VariableMgr.VarAttr(name = ENABLE_NEREIDS_TIMEOUT, needForward = true) public boolean enableNereidsTimeout = true; - @VariableMgr.VarAttr(name = "nereids_timeout_second", needForward = true) + @VariableMgr.VarAttr(name = NEREIDS_TIMEOUT_SECOND, needForward = true) public int nereidsTimeoutSecond = 30; @VariableMgr.VarAttr(name = ENABLE_PUSH_DOWN_NO_GROUP_AGG) @@ -3900,7 +3900,6 @@ public class SessionVariable implements Serializable, Writable { if (attr == null) { continue; } - if (!root.containsKey(attr.name())) { continue; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/VariableMgr.java b/fe/fe-core/src/main/java/org/apache/doris/qe/VariableMgr.java index a69ca0776e2..34cbe29c3fd 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/VariableMgr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/VariableMgr.java @@ -469,6 +469,11 @@ public class VariableMgr { try { String json = info.getPersistJsonString(); JSONObject root = (JSONObject) JSONValue.parse(json); + // if not variable version, we set it to 0 to ensure we could force set global variable. + boolean hasVariableVersion = root.containsKey(GlobalVariable.VARIABLE_VERSION); + if (!hasVariableVersion) { + GlobalVariable.variableVersion = GlobalVariable.VARIABLE_VERSION_0; + } for (Object varName : root.keySet()) { VarContext varContext = ctxByVarName.get((String) varName); if (Env.isCheckpointThread()) { @@ -728,11 +733,15 @@ public class VariableMgr { rlock.lock(); try { for (Map.Entry<String, VarContext> entry : ctxByDisplayVarName.entrySet()) { - // not show removed variables VarAttr varAttr = entry.getValue().getField().getAnnotation(VarAttr.class); + // not show removed variables if (VariableAnnotation.REMOVED.equals(varAttr.varType())) { continue; } + // not show invisible variables + if ((VariableMgr.INVISIBLE & varAttr.flag()) != 0) { + continue; + } // Filter variable not match to the regex. if (matcher != null && !matcher.match(entry.getKey())) { continue; @@ -947,4 +956,44 @@ public class VariableMgr { } return builder; } + + public static void forceUpdateVariables() { + int currentVariableVersion = GlobalVariable.variableVersion; + if (currentVariableVersion == GlobalVariable.VARIABLE_VERSION_0) { + // update from 2.0.15 or below to 2.0.16 or higher + if (VariableMgr.newSessionVariable().nereidsTimeoutSecond == 5) { + VariableMgr.refreshDefaultSessionVariables("update variable version", + SessionVariable.NEREIDS_TIMEOUT_SECOND, "30"); + } + } + if (currentVariableVersion < GlobalVariable.VARIABLE_VERSION_100) { + // update from 2.1.6 or below to 2.1.7 or higher + VariableMgr.refreshDefaultSessionVariables("update variable version", + SessionVariable.ENABLE_NEREIDS_DML, + String.valueOf(true)); + VariableMgr.refreshDefaultSessionVariables("update variable version", + SessionVariable.ENABLE_NEREIDS_DML_WITH_PIPELINE, + String.valueOf(true)); + VariableMgr.refreshDefaultSessionVariables("update variable version", + SessionVariable.ENABLE_NEREIDS_PLANNER, + String.valueOf(true)); + VariableMgr.refreshDefaultSessionVariables("update variable version", + SessionVariable.ENABLE_FALLBACK_TO_ORIGINAL_PLANNER, + String.valueOf(true)); + VariableMgr.refreshDefaultSessionVariables("update variable version", + SessionVariable.ENABLE_PIPELINE_X_ENGINE, + String.valueOf(true)); + } + if (currentVariableVersion < GlobalVariable.VARIABLE_VERSION_200) { + // update from 3.0.2 or below to 3.0.3 or higher + VariableMgr.refreshDefaultSessionVariables("update variable version", + SessionVariable.ENABLE_FALLBACK_TO_ORIGINAL_PLANNER, + String.valueOf(false)); + } + if (currentVariableVersion < GlobalVariable.CURRENT_VARIABLE_VERSION) { + VariableMgr.refreshDefaultSessionVariables("update variable version", + GlobalVariable.VARIABLE_VERSION, + String.valueOf(GlobalVariable.CURRENT_VARIABLE_VERSION)); + } + } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org