diff options
author | WangTaoTheTonic <barneystinson@aliyun.com> | 2015-02-13 10:27:23 +0000 |
---|---|---|
committer | Sean Owen <sowen@cloudera.com> | 2015-02-13 10:27:23 +0000 |
commit | 1768bd51438670c493ca3ca02988aee3ae31e87e (patch) | |
tree | 9f400d11500679972ca3f244c1d57b1ff9808950 | |
parent | 1c8633f3fe9d814c83384e339b958740c250c00c (diff) | |
download | spark-1768bd51438670c493ca3ca02988aee3ae31e87e.tar.gz spark-1768bd51438670c493ca3ca02988aee3ae31e87e.tar.bz2 spark-1768bd51438670c493ca3ca02988aee3ae31e87e.zip |
[SPARK-4832][Deploy]some other processes might take the daemon pid
Some other processes might use the pid saved in pid file. In that case we should ignore it and launch daemons.
JIRA is down for maintenance. I will file one once it return.
Author: WangTaoTheTonic <barneystinson@aliyun.com>
Author: WangTaoTheTonic <wangtao111@huawei.com>
Closes #3683 from WangTaoTheTonic/otherproc and squashes the following commits:
daa86a1 [WangTaoTheTonic] some bash style fix
8befee7 [WangTaoTheTonic] handle the mistake scenario
cf4ecc6 [WangTaoTheTonic] remove redundant condition
f36cfb4 [WangTaoTheTonic] some other processes might take the pid
-rwxr-xr-x | sbin/spark-daemon.sh | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/sbin/spark-daemon.sh b/sbin/spark-daemon.sh index 89608bc41b..ec6d0b5a40 100755 --- a/sbin/spark-daemon.sh +++ b/sbin/spark-daemon.sh @@ -129,8 +129,9 @@ case $option in mkdir -p "$SPARK_PID_DIR" if [ -f $pid ]; then - if kill -0 `cat $pid` > /dev/null 2>&1; then - echo $command running as process `cat $pid`. Stop it first. + TARGET_ID="$(cat "$pid")" + if [[ $(ps -p "$TARGET_ID" -o args=) =~ $command ]]; then + echo "$command running as process $TARGET_ID. Stop it first." exit 1 fi fi @@ -141,7 +142,7 @@ case $option in fi spark_rotate_log "$log" - echo starting $command, logging to $log + echo "starting $command, logging to $log" if [ $option == spark-submit ]; then source "$SPARK_HOME"/bin/utils.sh gatherSparkSubmitOpts "$@" @@ -154,7 +155,7 @@ case $option in echo $newpid > $pid sleep 2 # Check if the process has died; in that case we'll tail the log so the user can see - if ! kill -0 $newpid >/dev/null 2>&1; then + if [[ ! $(ps -p "$newpid" -o args=) =~ $command ]]; then echo "failed to launch $command:" tail -2 "$log" | sed 's/^/ /' echo "full log in $log" @@ -164,14 +165,15 @@ case $option in (stop) if [ -f $pid ]; then - if kill -0 `cat $pid` > /dev/null 2>&1; then - echo stopping $command - kill `cat $pid` + TARGET_ID="$(cat "$pid")" + if [[ $(ps -p "$TARGET_ID" -o args=) =~ $command ]]; then + echo "stopping $command" + kill "$TARGET_ID" else - echo no $command to stop + echo "no $command to stop" fi else - echo no $command to stop + echo "no $command to stop" fi ;; |