From 71e7cd63d4db9bcc5e107d6fc2dba8624b349e9a Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Wed, 22 Jul 2015 12:35:36 -0700 Subject: [PATCH] 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 --- debian/quagga.init.d | 4 ++-- watchquagga/watchquagga.c | 9 +-------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/debian/quagga.init.d b/debian/quagga.init.d index b9ad6e6669..dbf71ce885 100755 --- a/debian/quagga.init.d +++ b/debian/quagga.init.d @@ -469,9 +469,9 @@ if [ ! -d $V_PATH ]; then chmod 755 /$V_PATH fi -if [ -n "$3" ]; then +if [ -n "$3" ] && [ "$3" != "all" ]; then dmn="$2"-"$3" -elif [ -n "$2" ]; then +elif [ -n "$2" ] && [ "$2" != "all" ]; then dmn="$2" fi diff --git a/watchquagga/watchquagga.c b/watchquagga/watchquagga.c index ca05361c1c..0b48708b78 100644 --- a/watchquagga/watchquagga.c +++ b/watchquagga/watchquagga.c @@ -912,14 +912,7 @@ try_restart(struct daemon *dmn) break; } } - zlog_info("Phased restart: stopping all routing daemons."); - /* 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); + run_job(&gs.restart,"restart",gs.restart_command,0,1); break; default: zlog_err("error: unknown restart mode %d",gs.mode); -- 2.39.5