mirror of
https://github.com/ceph/ceph
synced 2025-02-20 17:37:29 +00:00
init-ceph: stop returns before daemons are dead
The existence of the pidfile must be checked outside of the loop to send a signal to the daemon. Otherwise the daemon will remove the pidfile and stop can return before the process is dead because it only checks /proc/$pid if the pidfile exists. http://tracker.ceph.com/issues/10389 Fixes: #10389 Signed-off-by: Loic Dachary <ldachary@redhat.com>
This commit is contained in:
parent
de0213457d
commit
487c22a8a4
@ -88,8 +88,7 @@ stop_daemon() {
|
||||
action=$5
|
||||
[ -z "$action" ] && action="Stopping"
|
||||
echo -n "$action Ceph $name on $host..."
|
||||
do_cmd "while [ 1 ]; do
|
||||
[ -e $pidfile ] || break
|
||||
do_cmd "if [ -e $pidfile ] ; then
|
||||
pid=\`cat $pidfile\`
|
||||
while [ -e /proc/\$pid ] && grep -q $daemon /proc/\$pid/cmdline ; do
|
||||
cmd=\"kill $signal \$pid\"
|
||||
@ -98,8 +97,7 @@ stop_daemon() {
|
||||
sleep 1
|
||||
continue
|
||||
done
|
||||
break
|
||||
done"
|
||||
fi"
|
||||
echo done
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user