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

zihaoxiang pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/dev by this push:
     new cc40816f87 [Bug][Script] Fix the type of variable workersGroupMap is 
not supported in bash 3.x (#9614)
cc40816f87 is described below

commit cc40816f87d1251ef2028b5d7e89805e6630a694
Author: Paul Zhang <[email protected]>
AuthorDate: Mon Apr 25 11:32:09 2022 +0800

    [Bug][Script] Fix the type of variable workersGroupMap is not supported in 
bash 3.x (#9614)
---
 script/scp-hosts.sh  | 27 ++++++++++++++-------------
 script/start-all.sh  |  5 ++---
 script/status-all.sh |  5 ++---
 script/stop-all.sh   |  5 ++---
 4 files changed, 20 insertions(+), 22 deletions(-)

diff --git a/script/scp-hosts.sh b/script/scp-hosts.sh
index f5c5155c79..a9499196d8 100755
--- a/script/scp-hosts.sh
+++ b/script/scp-hosts.sh
@@ -21,19 +21,14 @@ workDir=`cd ${workDir};pwd`
 
 source ${workDir}/env/install_env.sh
 
-txt=""
-if [[ "$OSTYPE" == "darwin"* ]]; then
-    # Mac OSX
-    txt="''"
-fi
-
 workersGroup=(${workers//,/ })
 for workerGroup in ${workersGroup[@]}
 do
   echo $workerGroup;
   worker=`echo $workerGroup|awk -F':' '{print $1}'`
-  groupsName=`echo $workerGroup|awk -F':' '{print $2}'`
-  workersGroupMap+=([$worker]=$groupsName)
+  group=`echo $workerGroup|awk -F':' '{print $2}'`
+  workerNames+=($worker)
+  groupNames+=(${group:-default})
 done
 
 hostsArr=(${ips//,/ })
@@ -47,17 +42,23 @@ do
   echo "scp dirs to $host/$installPath starting"
        ssh -p $sshPort $host  "cd $installPath/; rm -rf bin/ conf/ lib/ 
script/ sql/ ui/"
 
-  for dsDir in bin master-server worker-server alert-server api-server ui
-  do
-    # if worker in workersGroupMap
-    if [[ "${workersGroupMap[${host}]}" ]]; then
-      echo "export WORKER_GROUPS_0=${workersGroupMap[${host}]}" >> 
worker-server/bin/dolphinscheduler_env.sh
+  for i in ${!workerNames[@]}; do
+    if [[ ${workerNames[$i]} == $host ]]; then
+      workerIndex=$i
+      break
     fi
+  done
+  # set worker groups in application.yaml
+  [[ -n ${workerIndex} ]] && sed -i "s/- default/- 
${groupNames[$workerIndex]}/" worker-server/conf/application.yaml
 
+  for dsDir in bin master-server worker-server alert-server api-server ui
+  do
     echo "start to scp $dsDir to $host/$installPath"
     # Use quiet mode to reduce command line output
     scp -q -P $sshPort -r $workDir/../$dsDir  $host:$installPath
   done
+  # restore worker groups to default
+  [[ -n ${workerIndex} ]] && sed -i "s/- ${groupNames[$workerIndex]}/- 
default/" worker-server/conf/application.yaml
 
   echo "scp dirs to $host/$installPath complete"
 done
diff --git a/script/start-all.sh b/script/start-all.sh
index bda5d31833..35936eea0a 100755
--- a/script/start-all.sh
+++ b/script/start-all.sh
@@ -26,8 +26,7 @@ for workerGroup in ${workersGroup[@]}
 do
   echo $workerGroup;
   worker=`echo $workerGroup|awk -F':' '{print $1}'`
-  groupName=`echo $workerGroup|awk -F':' '{print $2}'`
-  workersGroupMap+=([$worker]=$groupName)
+  workerNames+=($worker)
 done
 
 mastersHost=(${masters//,/ })
@@ -38,7 +37,7 @@ do
 
 done
 
-for worker in ${!workersGroupMap[*]}
+for worker in ${workerNames[@]}
 do
   echo "$worker worker server is starting"
 
diff --git a/script/status-all.sh b/script/status-all.sh
index cc0eb03ffc..7f3f184094 100755
--- a/script/status-all.sh
+++ b/script/status-all.sh
@@ -41,8 +41,7 @@ workersGroup=(${workers//,/ })
 for workerGroup in ${workersGroup[@]}
 do
   worker=`echo $workerGroup|awk -F':' '{print $1}'`
-  groupName=`echo $workerGroup|awk -F':' '{print $2}'`
-  workersGroupMap+=([$worker]=$groupName)
+  workerNames+=($worker)
 done
 
 StateRunning="Running"
@@ -55,7 +54,7 @@ do
 done
 
 # 2.worker server check state
-for worker in ${!workersGroupMap[*]}
+for worker in ${workerNames[@]}
 do
   workerState=`ssh -p $sshPort $worker  "cd $installPath/; bash 
bin/dolphinscheduler-daemon.sh status worker-server;"`
   echo "$worker  $workerState"
diff --git a/script/stop-all.sh b/script/stop-all.sh
index c58a05ee2c..ee3a09cd41 100755
--- a/script/stop-all.sh
+++ b/script/stop-all.sh
@@ -26,8 +26,7 @@ for workerGroup in ${workersGroup[@]}
 do
   echo $workerGroup;
   worker=`echo $workerGroup|awk -F':' '{print $1}'`
-  groupName=`echo $workerGroup|awk -F':' '{print $2}'`
-  workersGroupMap+=([$worker]=$groupName)
+  workerNames+=($worker)
 done
 
 mastersHost=(${masters//,/ })
@@ -38,7 +37,7 @@ do
 
 done
 
-for worker in ${!workersGroupMap[*]}
+for worker in ${workerNames[@]}
 do
   echo "$worker worker server is stopping"
   ssh -p $sshPort $worker  "cd $installPath/; bash 
bin/dolphinscheduler-daemon.sh stop worker-server;"

Reply via email to