From c073bd25610ba556f3b30e6c583d1d74a10f09e2 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 19 Apr 2013 13:05:43 -0700 Subject: [PATCH] init-ceph: do not stop start on first failure When starting we often loop over many daemon instances. Currently we stop on the first error and do not try to start other daemons. Instead, try them all, but return a failure if anything did not start. Fixes: #2545 Signed-off-by: Sage Weil Reviewed-by: Gary Lowell (cherry picked from commit d395aa521e8a4b295ed2b08dd7cfb7d9f995fcf7) Conflicts: src/init-ceph.in --- src/ceph_common.sh | 18 ++++++++++++++++++ src/init-ceph.in | 5 ++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/ceph_common.sh b/src/ceph_common.sh index b66b1de3a53d..f20628bfa225 100644 --- a/src/ceph_common.sh +++ b/src/ceph_common.sh @@ -87,6 +87,24 @@ do_cmd() { fi } +do_cmd_okfail() { + ERR=0 + if [ -z "$ssh" ]; then + [ $verbose -eq 1 ] && echo "--- $host# $1" + ulimit -c unlimited + whoami=`whoami` + if [ "$whoami" = "$user" ] || [ -z "$user" ]; then + bash -c "$1" || { [ -z "$3" ] && echo "failed: '$1'" && ERR=1 && return 1; } + else + sudo su $user -c "$1" || { [ -z "$3" ] && echo "failed: '$1'" && ERR=1 && return 1; } + fi + else + [ $verbose -eq 1 ] && echo "--- $ssh $2 \"if [ ! -d $sshdir ]; then mkdir -p $sshdir; fi; cd $sshdir ; ulimit -c unlimited ; $1\"" + $ssh $2 "if [ ! -d $sshdir ]; then mkdir -p $sshdir; fi; cd $sshdir ; ulimit -c unlimited ; $1" || { [ -z "$3" ] && echo "failed: '$ssh $1'" && ERR=1 && return 1; } + fi + return 0 +} + do_root_cmd() { if [ -z "$ssh" ]; then [ $verbose -eq 1 ] && echo "--- $host# $1" diff --git a/src/init-ceph.in b/src/init-ceph.in index 8c1855a6aa0e..41fe4f4f4c82 100644 --- a/src/init-ceph.in +++ b/src/init-ceph.in @@ -314,7 +314,10 @@ for name in $what; do get_conf pre_start "" "pre start command" get_conf post_start "" "post start command" [ -n "$pre_start" ] && do_cmd "$pre_start" - do_cmd "$cmd" $runarg + do_cmd_okfail "$cmd" $runarg + if [ "$ERR" != "0" ]; then + EXIT_STATUS=$ERR + fi [ -n "$post_start" ] && do_cmd "$post_start" [ -n "$lockfile" ] && [ "$?" -eq 0 ] && touch $lockfile ;; -- 2.47.3