You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by he...@apache.org on 2025/12/16 07:14:29 UTC

(doris) branch master updated: [fix](docker) fix_parse_config_file (#59039)

This is an automated email from the ASF dual-hosted git repository.

hellostephen 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 63ed2382ce2 [fix](docker) fix_parse_config_file (#59039)
63ed2382ce2 is described below

commit 63ed2382ce2fd556c6be6b743ea321e35fe2a29c
Author: catpineapple <ca...@gmail.com>
AuthorDate: Tue Dec 16 15:14:22 2025 +0800

    [fix](docker) fix_parse_config_file (#59039)
---
 .../be/resource/be_disaggregated_entrypoint.sh     | 14 +++++++---
 .../be/resource/be_disaggregated_prestop.sh        | 23 ++++++++++++++---
 .../runtime/be/resource/be_disaggregated_probe.sh  | 22 +++++++++++++---
 docker/runtime/be/resource/be_entrypoint.sh        | 14 +++++++---
 docker/runtime/be/resource/be_prestop.sh           | 19 ++++++++++++--
 .../fe/resource/fe_disaggregated_entrypoint.sh     | 30 ++++++++++++++++++----
 .../fe/resource/fe_disaggregated_prestop.sh        | 20 +++++++++++++--
 .../runtime/fe/resource/fe_disaggregated_probe.sh  | 21 ++++++++++++---
 docker/runtime/fe/resource/fe_entrypoint.sh        | 13 ++++++++--
 docker/runtime/fe/resource/fe_prestop.sh           | 20 +++++++++++++--
 .../ms/resource/ms_disaggregated_prestop.sh        |  2 +-
 .../runtime/ms/resource/ms_disaggregated_probe.sh  | 16 +++++++++---
 12 files changed, 181 insertions(+), 33 deletions(-)

diff --git a/docker/runtime/be/resource/be_disaggregated_entrypoint.sh b/docker/runtime/be/resource/be_disaggregated_entrypoint.sh
index dc761aa2094..77dd9a09b42 100755
--- a/docker/runtime/be/resource/be_disaggregated_entrypoint.sh
+++ b/docker/runtime/be/resource/be_disaggregated_entrypoint.sh
@@ -198,10 +198,18 @@ function show_frontends()
 #parse the `$BE_CONFIG` file, passing the key need resolve as parameter.
 parse_confval_from_conf()
 {
-    # a naive script to grep given confkey from fe conf file
-    # assume conf format: ^\s*<key>\s*=\s*<value>\s*$
     local confkey=$1
-    local confvalue=`grep "^\s*$confkey" $BE_CONFIG | grep -v '^\s*#' | sed 's|^\s*'$confkey'\s*=\s*\(.*\)\s*$|\1|g'`
+
+    esc_key=$(printf '%s\n' "$confkey" | sed 's/[[\.*^$()+?{|]/\\&/g')
+    local confvalue=$(
+        grep -v '^[[:space:]]*#' "$BE_CONFIG" |
+        grep -E "^[[:space:]]*${esc_key}[[:space:]]*=" |
+        tail -n1 |
+        sed -E 's/^[[:space:]]*[^=]+[[:space:]]*=[[:space:]]*//' |
+        sed -E 's/[[:space:]]*#.*$//' |
+        sed -E 's/^[[:space:]]+|[[:space:]]+$//g'
+    )
+    log_stderr "[info] read 'be.conf' config [ $confkey: $confvalue]"
     echo "$confvalue"
 }
 
diff --git a/docker/runtime/be/resource/be_disaggregated_prestop.sh b/docker/runtime/be/resource/be_disaggregated_prestop.sh
index 8d753d6d875..45732f66507 100755
--- a/docker/runtime/be/resource/be_disaggregated_prestop.sh
+++ b/docker/runtime/be/resource/be_disaggregated_prestop.sh
@@ -22,11 +22,26 @@ DORIS_ROOT=${DORIS_HOME:="/opt/apache-doris"}
 DORIS_HOME=${DORIS_ROOT}/be
 BE_CONFFILE=${DORIS_HOME}/conf/be.conf
 
+log_stderr()
+{
+    echo "[`date`] $@" >&2
+}
+
 parse_confval_from_be_conf()
 {
     local confkey=$1
-    local confvalue=`grep "^\s*$confkey" $BE_CONFFILE | grep -v "^\s\#" | sed 's|^\s*'$confkey'\s*=\s*\(.*\)\s*$|\1|g'`
-    echo $confvalue
+
+    esc_key=$(printf '%s\n' "$confkey" | sed 's/[[\.*^$()+?{|]/\\&/g')
+    local confvalue=$(
+        grep -v '^[[:space:]]*#' "$BE_CONFFILE" |
+        grep -E "^[[:space:]]*${esc_key}[[:space:]]*=" |
+        tail -n1 |
+        sed -E 's/^[[:space:]]*[^=]+[[:space:]]*=[[:space:]]*//' |
+        sed -E 's/[[:space:]]*#.*$//' |
+        sed -E 's/^[[:space:]]+|[[:space:]]+$//g'
+    )
+    log_stderr "[info] read 'be.conf' config [ $confkey: $confvalue]"
+    echo "$confvalue"
 }
 
 log_dir=`parse_confval_from_be_conf "LOG_DIR"`
@@ -37,8 +52,8 @@ fi
 
 log_replace_var_dir=`eval echo "$log_dir"`
 kill_time=$(date  "+%Y-%m-%d %H:%M:%S")
-eval echo "[be_disaggregated_prestop.sh] ${kill_time} kubelet kill call the be_prestop.sh to stop be service." >> "$log_replace_var_dir/be.out"
+eval echo "[be_disaggregated_prestop.sh] ${kill_time} kubelet kill call the be_disaggregated_prestop.sh to stop be service." >> "$log_replace_var_dir/be.out"
 #eval echo "[be_disaggregated_prestop.sh] ${kill_time} kubelet kill call the be_prestop.sh to stop be service." 2>&1
-eval echo "[be_disaggregated_prestop.sh] ${kill_time} kubelet kill call the be_prestop.sh to stop be service ." >> "/proc/1/fd/1"
+eval echo "[be_disaggregated_prestop.sh] ${kill_time} kubelet kill call the be_disaggregated_prestop.sh to stop be service ." >> "/proc/1/fd/1"
 
 $DORIS_HOME/bin/stop_be.sh --grace
diff --git a/docker/runtime/be/resource/be_disaggregated_probe.sh b/docker/runtime/be/resource/be_disaggregated_probe.sh
index 9003d70b885..19f9eb6c128 100755
--- a/docker/runtime/be/resource/be_disaggregated_probe.sh
+++ b/docker/runtime/be/resource/be_disaggregated_probe.sh
@@ -36,11 +36,27 @@ TLS_CERTIFICATE_PATH=
 #tls_ca_certificate_path specify the path of root ca.
 TLS_CA_CERTIFICATE_PATH=
 
+log_stderr()
+{
+    echo "[`date`] $@" >&2
+}
+
 function parse_config_file_with_key()
 {
-    local key=$1
-    local value=`grep "^\s*$key\s*=" $CONFIG_FILE | sed "s|^\s*$key\s*=\s*\(.*\)\s*$|\1|g"`
-    echo $value
+    local confkey=$1
+
+    esc_key=$(printf '%s\n' "$confkey" | sed 's/[[\.*^$()+?{|]/\\&/g')
+    local confvalue=$(
+        grep -v '^[[:space:]]*#' "$CONFIG_FILE" |
+        grep -E "^[[:space:]]*${esc_key}[[:space:]]*=" |
+        tail -n1 |
+        sed -E 's/^[[:space:]]*[^=]+[[:space:]]*=[[:space:]]*//' |
+        sed -E 's/[[:space:]]*#.*$//' |
+        sed -E 's/^[[:space:]]+|[[:space:]]+$//g'
+    )
+    log_stderr "[info] read 'be.conf' config [ $confkey: $confvalue]"
+    echo "$confvalue"
+
 }
 
 
diff --git a/docker/runtime/be/resource/be_entrypoint.sh b/docker/runtime/be/resource/be_entrypoint.sh
index ac7c561a807..f34e23c1a59 100755
--- a/docker/runtime/be/resource/be_entrypoint.sh
+++ b/docker/runtime/be/resource/be_entrypoint.sh
@@ -179,10 +179,18 @@ function show_frontends()
 #parse the `$BE_CONFIG` file, passing the key need resolve as parameter.
 parse_confval_from_conf()
 {
-    # a naive script to grep given confkey from fe conf file
-    # assume conf format: ^\s*<key>\s*=\s*<value>\s*$
     local confkey=$1
-    local confvalue=`grep "^\s*$confkey" $BE_CONFIG | grep -v '^\s*#' | sed 's|^\s*'$confkey'\s*=\s*\(.*\)\s*$|\1|g'`
+
+    esc_key=$(printf '%s\n' "$confkey" | sed 's/[[\.*^$()+?{|]/\\&/g')
+    local confvalue=$(
+        grep -v '^[[:space:]]*#' "$BE_CONFIG" |
+        grep -E "^[[:space:]]*${esc_key}[[:space:]]*=" |
+        tail -n1 |
+        sed -E 's/^[[:space:]]*[^=]+[[:space:]]*=[[:space:]]*//' |
+        sed -E 's/[[:space:]]*#.*$//' |
+        sed -E 's/^[[:space:]]+|[[:space:]]+$//g'
+    )
+    log_stderr "[info] read 'be.conf' config [ $confkey: $confvalue]"
     echo "$confvalue"
 }
 
diff --git a/docker/runtime/be/resource/be_prestop.sh b/docker/runtime/be/resource/be_prestop.sh
index 3251b7e3632..29422f5997a 100755
--- a/docker/runtime/be/resource/be_prestop.sh
+++ b/docker/runtime/be/resource/be_prestop.sh
@@ -20,11 +20,26 @@ DORIS_ROOT=${DORIS_ROOT:-"/opt/apache-doris"}
 DORIS_HOME=${DORIS_ROOT}/be
 BE_CONFFILE=${DORIS_HOME}/conf/be.conf
 
+log_stderr()
+{
+    echo "[`date`] $@" >&2
+}
+
 parse_confval_from_be_conf()
 {
     local confkey=$1
-    local confvalue=`grep "^\s*$confkey" $BE_CONFFILE | grep -v "^\s\#" | sed 's|^\s*'$confkey'\s*=\s*\(.*\)\s*$|\1|g'`
-    echo $confvalue
+
+    esc_key=$(printf '%s\n' "$confkey" | sed 's/[[\.*^$()+?{|]/\\&/g')
+    local confvalue=$(
+        grep -v '^[[:space:]]*#' "$BE_CONFFILE" |
+        grep -E "^[[:space:]]*${esc_key}[[:space:]]*=" |
+        tail -n1 |
+        sed -E 's/^[[:space:]]*[^=]+[[:space:]]*=[[:space:]]*//' |
+        sed -E 's/[[:space:]]*#.*$//' |
+        sed -E 's/^[[:space:]]+|[[:space:]]+$//g'
+    )
+    log_stderr "[info] read 'be.conf' config [ $confkey: $confvalue]"
+    echo "$confvalue"
 }
 
 log_dir=`parse_confval_from_be_conf "LOG_DIR"`
diff --git a/docker/runtime/fe/resource/fe_disaggregated_entrypoint.sh b/docker/runtime/fe/resource/fe_disaggregated_entrypoint.sh
index 70aa54a6acf..dff93d10625 100755
--- a/docker/runtime/fe/resource/fe_disaggregated_entrypoint.sh
+++ b/docker/runtime/fe/resource/fe_disaggregated_entrypoint.sh
@@ -53,10 +53,13 @@ DB_ADMIN_PASSWD=$PASSWD
 # myself as IP or FQDN
 MYSELF=
 
+# doris mtat storage path
+DORIS_META_DIR=
+
 #specify enable tls or not.
 ENABLE_TLS=
 
-#tls_certificate_path specify the path of public crt. 
+#tls_certificate_path specify the path of public crt.
 TLS_CERTIFICATE_PATH=
 
 #tls_private_key_path specify the public secert key.
@@ -74,9 +77,18 @@ function log_stderr()
 parse_confval_from_fe_conf()
 {
     # a naive script to grep given confkey from fe conf file
-    # assume conf format: ^\s*<key>\s*=\s*<value>\s*$
     local confkey=$1
-    local confvalue=`grep "\<$confkey\>" $FE_CONFFILE | grep -v '^\s*#' | sed 's|^\s*'$confkey'\s*=\s*\(.*\)\s*$|\1|g'`
+
+    esc_key=$(printf '%s\n' "$confkey" | sed 's/[[\.*^$()+?{|]/\\&/g')
+    local confvalue=$(
+        grep -v '^[[:space:]]*#' "$FE_CONFFILE" |
+        grep -E "^[[:space:]]*${esc_key}[[:space:]]*=" |
+        tail -n1 |
+        sed -E 's/^[[:space:]]*[^=]+[[:space:]]*=[[:space:]]*//' |
+        sed -E 's/[[:space:]]*#.*$//' |
+        sed -E 's/^[[:space:]]+|[[:space:]]+$//g'
+    )
+    log_stderr "[info] read 'fe.conf' config [ $confkey: $confvalue]"
     echo "$confvalue"
 }
 
@@ -112,6 +124,13 @@ collect_env_info()
     if [[ "x$query_port" != "x" ]] ; then
         QUERY_PORT=$query_port
     fi
+
+    # parse meta_dir
+    local doris_meta_path=`parse_confval_from_fe_conf "meta_dir"`
+    if [[ "x$doris_meta_path" == "x" ]] ; then
+        doris_meta_path="/opt/apache-doris/fe/doris-meta"
+    fi
+    DORIS_META_DIR=$doris_meta_path
 }
 
 show_frontends()
@@ -495,13 +514,14 @@ resolve_password_from_secret
 #parse tls connection config
 parse_tls_connection_variables
 
-if [[ -f "$DORIS_HOME/doris-meta/image/ROLE" ]]; then
+collect_env_info
+doris_meta_dir=$(eval "echo \"$DORIS_META_DIR\"")
+if [[ -f "$doris_meta_dir/image/ROLE" ]]; then
     log_stderr "start fe with exist meta."
     ./doris-debug --component fe
     start_fe_with_meta
 else
     log_stderr "first start fe with meta not exist."
-    collect_env_info
     probe_master $fe_addrs
     #create account about node management
     create_account
diff --git a/docker/runtime/fe/resource/fe_disaggregated_prestop.sh b/docker/runtime/fe/resource/fe_disaggregated_prestop.sh
index bab9092d56b..fc04ec07c50 100755
--- a/docker/runtime/fe/resource/fe_disaggregated_prestop.sh
+++ b/docker/runtime/fe/resource/fe_disaggregated_prestop.sh
@@ -22,11 +22,27 @@ DORIS_ROOT=${DORIS_ROOT:-"/opt/apache-doris"}
 DORIS_HOME=${DORIS_ROOT}/fe
 FE_CONFFILE=$DORIS_HOME/conf/fe.conf
 
+log_stderr()
+{
+    echo "[`date`] $@" >&2
+}
+
 parse_confval_from_fe_conf()
 {
+    # a naive script to grep given confkey from fe conf file
     local confkey=$1
-    local confvalue=`grep "^\s*$confkey" $FE_CONFFILE | grep -v "^\s\#" | sed 's|^\s*'$confkey'\s*=\s*\(.*\)\s*$|\1|g'`
-    echo $confvalue
+
+    esc_key=$(printf '%s\n' "$confkey" | sed 's/[[\.*^$()+?{|]/\\&/g')
+    local confvalue=$(
+        grep -v '^[[:space:]]*#' "$FE_CONFFILE" |
+        grep -E "^[[:space:]]*${esc_key}[[:space:]]*=" |
+        tail -n1 |
+        sed -E 's/^[[:space:]]*[^=]+[[:space:]]*=[[:space:]]*//' |
+        sed -E 's/[[:space:]]*#.*$//' |
+        sed -E 's/^[[:space:]]+|[[:space:]]+$//g'
+    )
+    log_stderr "[info] read 'fe.conf' config [ $confkey: $confvalue]"
+    echo "$confvalue"
 }
 
 log_dir=`parse_confval_from_fe_conf "LOG_DIR"`
diff --git a/docker/runtime/fe/resource/fe_disaggregated_probe.sh b/docker/runtime/fe/resource/fe_disaggregated_probe.sh
index 9e794381f5f..65496370a46 100755
--- a/docker/runtime/fe/resource/fe_disaggregated_probe.sh
+++ b/docker/runtime/fe/resource/fe_disaggregated_probe.sh
@@ -24,11 +24,26 @@ DEFAULT_HTTP_PORT=8030
 DEFAULT_QUERY_PORT=9030
 PROBE_TYPE=$1
 
+log_stderr()
+{
+    echo "[`date`] $@" >&2
+}
+
 function parse_config_file_with_key()
 {
-    local key=$1
-    local value=`grep "^\s*$key\s*=" $CONFIG_FILE | sed "s|^\s*$key\s*=\s*\(.*\)\s*$|\1|g"`
-    echo $value
+    local confkey=$1
+
+    esc_key=$(printf '%s\n' "$confkey" | sed 's/[[\.*^$()+?{|]/\\&/g')
+    local confvalue=$(
+        grep -v '^[[:space:]]*#' "$CONFIG_FILE" |
+        grep -E "^[[:space:]]*${esc_key}[[:space:]]*=" |
+        tail -n1 |
+        sed -E 's/^[[:space:]]*[^=]+[[:space:]]*=[[:space:]]*//' |
+        sed -E 's/[[:space:]]*#.*$//' |
+        sed -E 's/^[[:space:]]+|[[:space:]]+$//g'
+    )
+    log_stderr "[info] read 'fe.conf' config [ $confkey: $confvalue]"
+    echo "$confvalue"
 }
 
 parse_tls_connection_variables()
diff --git a/docker/runtime/fe/resource/fe_entrypoint.sh b/docker/runtime/fe/resource/fe_entrypoint.sh
index 2210c2d0340..22824bb887b 100755
--- a/docker/runtime/fe/resource/fe_entrypoint.sh
+++ b/docker/runtime/fe/resource/fe_entrypoint.sh
@@ -61,9 +61,18 @@ function log_stderr()
 parse_confval_from_fe_conf()
 {
     # a naive script to grep given confkey from fe conf file
-    # assume conf format: ^\s*<key>\s*=\s*<value>\s*$
     local confkey=$1
-    local confvalue=`grep "\<$confkey\>" $FE_CONFFILE | grep -v '^\s*#' | sed 's|^\s*'$confkey'\s*=\s*\(.*\)\s*$|\1|g'`
+
+    esc_key=$(printf '%s\n' "$confkey" | sed 's/[[\.*^$()+?{|]/\\&/g')
+    local confvalue=$(
+        grep -v '^[[:space:]]*#' "$FE_CONFFILE" |
+        grep -E "^[[:space:]]*${esc_key}[[:space:]]*=" |
+        tail -n1 |
+        sed -E 's/^[[:space:]]*[^=]+[[:space:]]*=[[:space:]]*//' |
+        sed -E 's/[[:space:]]*#.*$//' |
+        sed -E 's/^[[:space:]]+|[[:space:]]+$//g'
+    )
+    log_stderr "[info] read 'fe.conf' config [ $confkey: $confvalue]"
     echo "$confvalue"
 }
 
diff --git a/docker/runtime/fe/resource/fe_prestop.sh b/docker/runtime/fe/resource/fe_prestop.sh
index eb7c3966276..b1e73c0bed1 100755
--- a/docker/runtime/fe/resource/fe_prestop.sh
+++ b/docker/runtime/fe/resource/fe_prestop.sh
@@ -20,11 +20,27 @@ DORIS_ROOT=${DORIS_ROOT:-"/opt/apache-doris"}
 DORIS_HOME=${DORIS_ROOT}/fe
 FE_CONFFILE=$DORIS_HOME/conf/fe.conf
 
+log_stderr()
+{
+    echo "[`date`] $@" >&2
+}
+
 parse_confval_from_fe_conf()
 {
+    # a naive script to grep given confkey from fe conf file
     local confkey=$1
-    local confvalue=`grep "^\s*$confkey" $FE_CONFFILE | grep -v "^\s\#" | sed 's|^\s*'$confkey'\s*=\s*\(.*\)\s*$|\1|g'`
-    echo $confvalue
+
+    esc_key=$(printf '%s\n' "$confkey" | sed 's/[[\.*^$()+?{|]/\\&/g')
+    local confvalue=$(
+        grep -v '^[[:space:]]*#' "$FE_CONFFILE" |
+        grep -E "^[[:space:]]*${esc_key}[[:space:]]*=" |
+        tail -n1 |
+        sed -E 's/^[[:space:]]*[^=]+[[:space:]]*=[[:space:]]*//' |
+        sed -E 's/[[:space:]]*#.*$//' |
+        sed -E 's/^[[:space:]]+|[[:space:]]+$//g'
+    )
+    log_stderr "[info] read 'fe.conf' config [ $confkey: $confvalue]"
+    echo "$confvalue"
 }
 
 log_dir=`parse_confval_from_fe_conf "LOG_DIR"`
diff --git a/docker/runtime/ms/resource/ms_disaggregated_prestop.sh b/docker/runtime/ms/resource/ms_disaggregated_prestop.sh
index d4796f1453d..2dcb06967d1 100755
--- a/docker/runtime/ms/resource/ms_disaggregated_prestop.sh
+++ b/docker/runtime/ms/resource/ms_disaggregated_prestop.sh
@@ -20,7 +20,7 @@
 #get from env
 DORIS_ROOT=${DORIS_ROOT:-"/opt/apache-doris"}
 DORIS_HOME=${DORIS_ROOT}/ms
-MS_CONFFILE=${DORIS_HOME}/conf/doris_cloud.conf.conf
+MS_CONFFILE=${DORIS_HOME}/conf/doris_cloud.conf
 
 log_file="/opt/apache-doris/ms/log/meta_service.INFO"
 kill_time=$(date  "+%Y-%m-%d %H:%M:%S")
diff --git a/docker/runtime/ms/resource/ms_disaggregated_probe.sh b/docker/runtime/ms/resource/ms_disaggregated_probe.sh
index 87bb316375f..259fcb55a8f 100755
--- a/docker/runtime/ms/resource/ms_disaggregated_probe.sh
+++ b/docker/runtime/ms/resource/ms_disaggregated_probe.sh
@@ -28,9 +28,19 @@ log_stderr()
 
 function parse_config_file_with_key()
 {
-    local key=$1
-    local value=`grep "^\s*$key\s*=" $CONFIG_FILE | sed "s|^\s*$key\s*=\s*\(.*\)\s*$|\1|g"`
-    echo $value
+    local confkey=$1
+
+    esc_key=$(printf '%s\n' "$confkey" | sed 's/[[\.*^$()+?{|]/\\&/g')
+    local confvalue=$(
+        grep -v '^[[:space:]]*#' "$CONFIG_FILE" |
+        grep -E "^[[:space:]]*${esc_key}[[:space:]]*=" |
+        tail -n1 |
+        sed -E 's/^[[:space:]]*[^=]+[[:space:]]*=[[:space:]]*//' |
+        sed -E 's/[[:space:]]*#.*$//' |
+        sed -E 's/^[[:space:]]+|[[:space:]]+$//g'
+    )
+    log_stderr "[info] read 'doris_cloud.conf' config [ $confkey: $confvalue]"
+    echo "$confvalue"
 }
 
 function alive_probe()


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org