--- src/sv.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/sv.c b/src/sv.c index 7c6f6ed..701912c 100644 --- a/src/sv.c +++ b/src/sv.c _at__at_ -227,7 +227,11 @@ int check(char *a) { if (!checkscript()) return(0); break; case 'd': if (pid || svstatus[19] != 0) return(0); break; - case 'C': if (pid) if (!checkscript()) return(0); break; + case 'C': + switch (svstatus[17]) { + case 'u': if (!pid || !checkscript()) return(0); break; + case 'd': if (pid) return(0); break; + } case 't': case 'k': if (!pid && svstatus[17] == 'd') break; On Mon, Feb 9, 2015 at 9:50 AM, Buck Evan <buck_at_yelp.com> wrote: > +1 > > I usually assume usability issues like these exist simply because the > original dev didn't encounter them, until proven otherwise. > > On Mon, Feb 9, 2015 at 2:17 AM, James Byrne <james.byrne_at_origamienergy.com > > wrote: > >> On 09/02/15 01:49, Buck Evan wrote: >> >>> My most immediate problem is that my client process is running sv check >>> before runit is even properly started. >>> >>> My current solution is to wrap sv check and catch both the >>> cant-contact-supervisor, and ok:down-want:up conditions and count them as >>> down, and continue polling up to $SVWAIT seconds. >>> >>> I believe this should properly be the behavior of sv check though. >>> >> >> I had the same problem, and posted a possible solution, and some >> questions about it, to this list a few weeks ago (Jan 14), but I didn't >> really get a lot of feedback on whether or not this was the right change. >> Please feel free to try it though, as it seems to work for me. >> >> My solution is to make the following change to sv.c: >> >> --- old/sv.c 2014-08-10 19:22:34.000000000 +0100 >> +++ new/sv.c 2015-01-14 14:29:31.384556297 +0000 >> _at__at_ -227,7 +227,7 @@ >> if (!checkscript()) return(0); >> break; >> case 'd': if (pid || svstatus[19] != 0) return(0); break; >> - case 'C': if (pid) if (!checkscript()) return(0); break; >> + case 'C': if (!pid || !checkscript()) return(0); break; >> case 't': >> case 'k': >> if (!pid && svstatus[17] == 'd') break; >> >> With this change, "sv check" works in a much more useful way. If all the >> services specified are up it will exit with exit code 0, and if not it will >> wait until the timeout for them to come up, and return a non-zero exit code >> if any are still down. >> >> I would still appreciate any feedback on this, and especially on whether >> there is any reason for the existing behaviour of 'sv check'. >> >> James >> > >Received on Mon Feb 09 2015 - 23:59:37 UTC
This archive was generated by hypermail 2.3.0 : Sun May 09 2021 - 19:44:19 UTC