Re: patch: sv check should wait when svrun is not ready

From: Buck Evan <buck_at_yelp.com>
Date: Mon, 16 Feb 2015 13:23:40 -0800

Is there anything else I can do to get this considered for merge?

On Mon, Feb 9, 2015 at 5:55 PM, Buck Evan <buck_at_yelp.com> wrote:

> Essentially, if `sv check` is run too soon after `runsv` (or runit for
> that matter), it will immediately fail without waiting for runsv to come
> up. In my particular use case, runit is running inside a (detached) docker,
> and I'm using `sv check` to wait for my dockerized service to be ready,
> which I think is a good use case for `sv check`. Without this patch, I'm
> forced to write some code which re-runs `sv check` if it fails before
> $SVWAIT seconds, which sounds awfully like the behavior of sv-check itself.
>
>
> You can demonstrate the problem I'm trying to describe like so:
>
> #!/bin/bash
> make
> rm -rf myservice
> mkdir -p myservice
> ln -s /bin/cat myservice/run
> ./runsv ./myservice/ >&/dev/null & ./sv check ./myservice/; echo $?; ./sv
> check ./myservice/; echo $?
>
>
> Output:
>
> $ ./demo
> warning: ./myservice/: unable to open supervise/ok: file does not exist
> 1
> ok: run: ./myservice/: (pid 65635) 0s
> 0
>
>
> Patch:
>
> --- src/sv.c
> +++ src/sv.c
> _at__at_ -213,7 +213,7 @@ int checkscript() {
> int check(char *a) {
> unsigned int pid;
>
> - if ((r =svstatus_get()) == -1) return(-1);
> + if ((r =svstatus_get()) == -1) return(0);
> while (*a) {
> if (r == 0) { if (*a == 'x') return(1); return(-1); }
> pid =(unsigned char)svstatus[15];
>
>
Received on Mon Feb 16 2015 - 21:23:40 UTC

This archive was generated by hypermail 2.3.0 : Sun May 09 2021 - 19:44:19 UTC