watchquagga-mode-3-fix.patch

Watchquagga: In phased restart with zebra, invoke restart all when zebra dies

To correctly handle starting and stopping of individual daemons not affecting
watchquagga's monitoring, we resorted to fixing up watchquagga's daemon watch
list every time a daemon was started or stopped. This was done by restarting
watchquagga itself. This meant the handling of phased restart of individual
daemons was broken in watchquagga as it attempted to stop daemons individually
before starting them all individually. Fix this by restarting all when this
happens. This does make mode 4 indistinguishable from mode 1, but I don't
understood the point of mode 4 and we don't think users change watchquagga
modes.

Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
This commit is contained in:
Donald Sharp 2015-07-22 12:35:36 -07:00
parent 91756b38b1
commit 71e7cd63d4
2 changed files with 3 additions and 10 deletions

View File

@ -469,9 +469,9 @@ if [ ! -d $V_PATH ]; then
chmod 755 /$V_PATH chmod 755 /$V_PATH
fi fi
if [ -n "$3" ]; then if [ -n "$3" ] && [ "$3" != "all" ]; then
dmn="$2"-"$3" dmn="$2"-"$3"
elif [ -n "$2" ]; then elif [ -n "$2" ] && [ "$2" != "all" ]; then
dmn="$2" dmn="$2"
fi fi

View File

@ -912,14 +912,7 @@ try_restart(struct daemon *dmn)
break; break;
} }
} }
zlog_info("Phased restart: stopping all routing daemons."); run_job(&gs.restart,"restart",gs.restart_command,0,1);
/* First step: stop all other daemons. */
for (dmn = gs.daemons; dmn; dmn = dmn->next)
{
if (dmn != gs.special)
run_job(&dmn->restart,"stop",gs.stop_command,1,1);
}
set_phase(PHASE_STOPS_PENDING);
break; break;
default: default:
zlog_err("error: unknown restart mode %d",gs.mode); zlog_err("error: unknown restart mode %d",gs.mode);