Is there anything else I can do to get this considered for merge? On Mon, Feb 9, 2015 at 5:55 PM, Buck Evan <b...@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 > @@ -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]; > >