Re: cfengine watchdog is not biting
Xander Cage <[email protected]> Tue, 27 Feb 2024 07:15:40 -0800 (PST)
| Newsgroups | gmane.comp.sysutils.cfengine.general |
|---|---|
| Message-ID | <[email protected]> |
new run with echoes... root@aixtest01: /root # bash -c 'echo $$ > /var/cfengine/watchdog_changed.pid && exec /opt/freeware/bin/sleep infinity' & [1] 4456792 root@aixtest01: /root # /var/cfengine/bin/watchdog_changed We have a pidfile There is a process with the PID in the file, but is it stale? We can know for sure if its stale Pidfile is stale, ignore it root@aixtest01: /root # bash -c 'echo $$ > /var/cfengine/watchdog_changed.pid' root@aixtest01: /root # /var/cfengine/bin/watchdog_changed We have a pidfile No current process matching pid in file root@aixtest01: /root # bash -c 'echo $$ > /var/cfengine/watchdog_changed.pid && touch -t 02210927 /var/cfengine/watchdog_changed.pid && exec /opt/freeware/bin/sleep infinity' & [2] 12321240 root@aixtest01: /root # /var/cfengine/bin/watchdog_changed We have a pidfile There is a process with the PID in the file, but is it stale? We can know for sure if its stale Pidfile is stale, ignore it [2]+ Stopped bash -c 'echo $$ > /var/cfengine/watchdog_changed.pid && touch -t 02210927 /var/cfengine/watchdog_changed.pid && exec /opt/freeware/bin/sleep infinity' On Monday, February 26, 2024 at 7:54:42 PM UTC+1 [email protected] wrote: > Hi Xander, > > From that output it doesn't appear that the edited watchdog is looking at > the same modified location for the pidfile as you're using, since the first > test should have produced an "abort" message. > > Could you please run those same tests again but convert the inline > comments to echo commands as shown below, so we can see which branch is > being taken? > > Expected results: Your first test should give "Pidfile is definitely > correct" and an abort message; second test should say "Pidfile is stale, > ignore it"; third test should say "No current process matching pid in file". > > Best, > --Mike Weilgart > > ###### > if [ -s $PIDFILE ]; then > echo We have a pidfile > if ps -p $(cat $PIDFILE) > /dev/null 2>&1 ; then > echo 'There is a process with the PID in the file, but is it > stale?' > if [ -d /proc ]; then > echo "We can know for sure if it's stale" > actual_process="/proc/$(cat "$PIDFILE")" > newer="$(ls -1dt "$PIDFILE" "$actual_process" | head -n 1)" > if [ "$actual_process" = "$newer" ]; then > echo Pidfile is stale, ignore it > echo $$ > $PIDFILE > else > > echo Pidfile is definitely correct > echo "$(date) Aborting execution of watchdog $$, existing > watchdog process $(cat $PIDFILE) running" >> ${LOGFILE} > exit 1 > fi > else > echo "No /proc, pidfile shows a running process, we'll assume > it's valid" > echo "$(date) Aborting execution of watchdog $$, existing > watchdog process $(cat $PIDFILE) running" >> ${LOGFILE} > exit 1 > fi > else > echo No current process matching pid in file > echo $$ > $PIDFILE > fi > else > echo No pidfile at all > echo $$ > $PIDFILE > fi > ###### > > On Feb 26, 2024, at 1:44 AM, Xander Cage <[email protected]> wrote: > > did the requested tests... > > > root@aixtest01: /root # bash -c 'echo $$ > > /var/cfengine/watchdog_changed.pid && exec /opt/freeware/bin/sleep > infinity' & > [2] 22020394 > root@aixtest01: /root # /var/cfengine/bin/watchdog_changed > > log output: > > Mon Feb 26 10:36:45 CET 2024 Initiating watchdog 4456948 > Mon Feb 26 10:36:47 CET 2024 Found 0 symptoms, threshold (0) not breached, > no remediation or collection performed > Mon Feb 26 10:36:47 CET 2024 DONE watchdog 4456948 > > > root@aixtest01: /root # bash -c 'echo $$ > > /var/cfengine/watchdog_changed.pid' > root@aixtest01: /root # /var/cfengine/bin/watchdog_changed > > log output: > > Mon Feb 26 10:37:52 CET 2024 Initiating watchdog 17432960 > Mon Feb 26 10:37:53 CET 2024 Found 0 symptoms, threshold (0) not breached, > no remediation or collection performed > Mon Feb 26 10:37:53 CET 2024 DONE watchdog 17432960 > > > root@aixtest01: /root # bash -c 'echo $$ > > /var/cfengine/watchdog_changed.pid && touch -t 02210927 > /var/cfengine/watchdog_changed.pid && exec /opt/freeware/bin/sleep > infinity' & > [3] 32964974 > root@aixtest01: /root # /var/cfengine/bin/watchdog_changed > > [3]+ Stopped bash -c 'echo $$ > > /var/cfengine/watchdog_changed.pid && touch -t 02210927 > /var/cfengine/watchdog_changed.pid && exec /opt/freeware/bin/sleep infinity' > > log output: > > Mon Feb 26 10:39:28 CET 2024 Initiating watchdog 12321050 > Mon Feb 26 10:39:31 CET 2024 Found 0 symptoms, threshold (0) not breached, > no remediation or collection performed > Mon Feb 26 10:39:31 CET 2024 DONE watchdog 12321050 > > expected something more exiting...but it is what is i guess.... > > > On Friday, February 23, 2024 at 9:20:49 AM UTC+1 Xander Cage wrote: > >> no problem...will do the tests next week... >> >> On Thursday, February 22, 2024 at 6:32:06 PM UTC+1 [email protected] >> wrote: >> >>> Thanks Xander, >>> >>> You could test it by running something like: >>> >>> bash -c 'echo $$ > /var/cfengine/watchdog.pid && exec sleep infinity' & >>> >>> Running bash separately ensures the pid will be different, and the exec >>> makes the sleep run with the same PID as the shell was running with (i.e. >>> that PID is taken oven by the sleep) and the & makes it all happen in the >>> background. >>> >>> Then you've got a pidfile showing a valid, running process that is >>> definitely using that pid. >>> >>> To simulate stale pidfile with no process using that pid is easy, just >>> put a number in there and then exit: >>> >>> bash -c 'echo $$ > /var/cfengine/watchdog.pid' >>> >>> To simulate stale pidfile where there is a process running on that pid >>> but it's newer than the pidfile is also possible; it requires use of touch >>> to set an old mtime. Checking AIX docs ( >>> https://www.ibm.com/docs/en/aix/7.3?topic=t-touch-command) it looks >>> like it should be something like: >>> >>> bash -c 'echo $$ > /var/cfengine/watchdog.pid && touch -t >>> 02210927 /var/cfengine/watchdog.pid && exec sleep infinity' & >>> >>> (That would set the mtime to 24 hours ago at this writing - Feb 21 at >>> 9:27 in the morning.) >>> >>> Then in each case run the watchdog and see what happens, maybe convert >>> my inline comments to echo commands so you can see which branch is taken. >>> (E.g. echo "Pidfile is definitely correct") >>> >>> I much prefer submitting fully tested code but unfortunately I don't >>> have access to any AIX systems, so if you could try the above it would be >>> very much appreciated. :) And this way any issues can be found before the >>> updated code is included in any release. >>> >>> Best, >>> --Mike Weilgart >>> >>> On Feb 22, 2024, at 5:26 AM, Xander Cage <[email protected]> wrote: >>> >>> forgot to post the error: >>> >>> root@aixtest01: /root # /var/cfengine/bin/watchdog_changed >>> /var/cfengine/bin/watchdog_changed[52]: syntax error at line 64 : `else' >>> unexpected >>> >>> On Thursday, February 22, 2024 at 2:25:03 PM UTC+1 Xander Cage wrote: >>> >>>> i dont think the problematic situation can be simulated, but running >>>> the changed script shows a missing "then" ;-) >>>> >>>> >>>> https://github.com/cfengine/masterfiles/blob/70eb84ad845af716fdc53b1299544e7b521a563d/cfe_internal/core/watchdog/templates/watchdog.mustache#L60 >>>> >>>> after adding it, the scripts runs without errors.... >>>> >>>> On Thursday, February 22, 2024 at 2:47:24 AM UTC+1 [email protected] >>>> wrote: >>>> >>>>> I opened a pull request: >>>>> https://github.com/cfengine/masterfiles/pull/2841 >>>>> >>>>> Would like some help with testing. Would be especially great to test >>>>> on some of these systems where the existing pidfile logic isn't working, >>>>> besides testing the usual cases. >>>>> >>>>> Best, >>>>> --Mike Weilgart >>>>> On Wednesday, February 21, 2024 at 6:59:41 AM UTC-8 nick.a...@ >>>>> northern.tech wrote: >>>>> >>>>>> Thanks for filing the ticket. :D >>>>>> >>>>>> On Tuesday, February 20, 2024 at 6:34:15 AM UTC-6 Xander Cage wrote: >>>>>> >>>>>>> ticket created -> https://northerntech.atlassian.net/browse/CFE-4335 >>>>>>> >>>>>>> >>>>>>> On Tuesday, February 20, 2024 at 11:11:20 AM UTC+1 Xander Cage wrote: >>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> At times the cfengine watchdog script is unable to resolve hanging >>>>>>>> cf-agents. the reason is that if the system is under high load the watchdog >>>>>>>> "hangs" because it reads his own stale pid file and is doing simply nothing. >>>>>>>> >>>>>>>> >>>>>>>> example: >>>>>>>> >>>>>>>> i had 332 hanging cf-agent processe but the watchdog log just shows >>>>>>>> this. >>>>>>>> >>>>>>>> Tue Feb 20 10:57:00 CET 2024 Initiating watchdog 6816488 >>>>>>>> Tue Feb 20 10:57:00 CET 2024 Aborting execution of watchdog >>>>>>>> 6816488, existing watchdog process 16450014 running >>>>>>>> Tue Feb 20 10:58:00 CET 2024 Initiating watchdog 44499432 >>>>>>>> Tue Feb 20 10:58:00 CET 2024 Aborting execution of watchdog >>>>>>>> 44499432, existing watchdog process 16450014 running >>>>>>>> >>>>>>>> after deleting the pid file... >>>>>>>> >>>>>>>> Tue Feb 20 10:59:00 CET 2024 Initiating watchdog 25756150 >>>>>>>> Tue Feb 20 10:59:01 CET 2024 Found cf-execd not running >>>>>>>> Tue Feb 20 10:59:03 CET 2024 Found 332 occurrences of cf-execd >>>>>>>> terminating unresponsive cf-agent >>>>>>>> Tue Feb 20 10:59:04 CET 2024 Found 2 symptoms, threshold (0) >>>>>>>> breached. >>>>>>>> Tue Feb 20 10:59:06 CET 2024 Initiating apoptosis >>>>>>>> Tue Feb 20 10:59:10 CET 2024 Initiating anastasis >>>>>>>> >>>>>>>> i guess there is room for impovement, as this can bring a system >>>>>>>> down quite easyily. >>>>>>>> >>>>>>>> wbr >>>>>>>> >>>>>>>> chris >>>>>>>> >>>>>>>> >>> -- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "help-cfengine" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/help-cfengine/ddLSAt7qsos/unsubscribe. >>> To unsubscribe from this group and all its topics, send an email to >>> [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/help-cfengine/24484aa8-cf0f-4882-a8b5-47894c81af5cn%40googlegroups.com >>> <https://groups.google.com/d/msgid/help-cfengine/24484aa8-cf0f-4882-a8b5-47894c81af5cn%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >>> > -- > You received this message because you are subscribed to a topic in the > Google Groups "help-cfengine" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/help-cfengine/ddLSAt7qsos/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/help-cfengine/0292d488-b8f5-44ac-b442-2f721dd82163n%40googlegroups.com > <https://groups.google.com/d/msgid/help-cfengine/0292d488-b8f5-44ac-b442-2f721dd82163n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > -- You received this message because you are subscribed to the Google Groups "help-cfengine" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/help-cfengine/f42d2969-81b7-4882-8cd6-e11d69f8dad6n%40googlegroups.com.