<div dir="ltr"><div class="gmail_extra">Hi Jens,</div><div class="gmail_extra"><br><div class="gmail_quote">2014-03-20 17:41 GMT+00:00 Jens Rantil <span dir="ltr"><<a href="mailto:jens.rantil@tink.se" target="_blank">jens.rantil@tink.se</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><span style="font-family:arial,sans-serif;font-size:13px">Hi,</span><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">I have an HTTP server daemon process that I start using upstart. When I start it I'd like it to wait for at most 60 seconds for an HTTP check to return 200. If it doesn't return within 60 I'd like to fail "start myapp", otherwise I'd like to return "start myapp" as soon as I get a correct HTTP response.</div>



<div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">I've been trying to use</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div>



<div style="font-family:arial,sans-serif;font-size:13px">post-start script</div><div style="font-family:arial,sans-serif;font-size:13px">  /bin/my-healthcheck --max-wait 60</div><div style="font-family:arial,sans-serif;font-size:13px">



  if [ $? -ne 0 ]; then</div><div style="font-family:arial,sans-serif;font-size:13px">    stop</div><div style="font-family:arial,sans-serif;font-size:13px">    exit 1</div><div style="font-family:arial,sans-serif;font-size:13px">



  fi</div><div style="font-family:arial,sans-serif;font-size:13px">end script</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">But "stop; exit 1" doesn't seem to stop my service.</div>

</div></blockquote><div>Your script is subtly incorrect; Upstart uses '/bin/sh -e' to run all script sections so if my-healthcheck fails, that post-start script shell will *immediately* exit 1, and stop will never be called.</div>

<div><br></div><div>See:</div><div><br></div><div>- Behaviour of 'set -e' in sh(1).</div><div>- <a href="http://upstart.ubuntu.com/cookbook/#develop-scripts-using-bin-sh" target="_blank">http://upstart.ubuntu.com/cookbook/#develop-scripts-using-bin-sh</a><br>

</div><div><br></div><div>To handle this, you could do something like:</div><div><br></div><div><div>post-start script</div><div>  /bin/my-healthcheck --max-wait 60 || { stop; exit 1; }</div><div>end script<br></div></div>

<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">

<div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">Can this be done using upstart? Or will I need to `exec myservice_safe` that initiates a check and my main script? Or use events?</div>



<div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">Thanks,</div><div style="font-family:arial,sans-serif;font-size:13px">Jens</div><div style="font-family:arial,sans-serif;font-size:13px">



<br></div><div style="font-family:arial,sans-serif;font-size:13px">PS. I've cross posted my question here: <a href="https://serverfault.com/questions/583426/why-is-this-upstart-script-not-stopping-my-process" target="_blank">https://serverfault.com/questions/583426/why-is-this-upstart-script-not-stopping-my-process</a></div>



</div>
<br>--<br>
upstart-devel mailing list<br>
<a href="mailto:upstart-devel@lists.ubuntu.com" target="_blank">upstart-devel@lists.ubuntu.com</a><br>
Modify settings or unsubscribe at: <a href="https://lists.ubuntu.com/mailman/listinfo/upstart-devel" target="_blank">https://lists.ubuntu.com/mailman/listinfo/upstart-devel</a></blockquote><div><br></div><div><br></div><div>
Kind regards,</div><div><br></div><div>James.</div><div>--</div><div>James Hunt</div><div>____________________________________</div><div>#upstart on freenode</div><div><a href="http://upstart.ubuntu.com/cookbook">http://upstart.ubuntu.com/cookbook</a></div>
<div><a href="https://lists.ubuntu.com/mailman/listinfo/upstart-devel">https://lists.ubuntu.com/mailman/listinfo/upstart-devel</a></div></div>

</div></div>