[erlang-patches] Fix one_for_all and rest_for_one supervisor multiple restarts

James Fish <>
Thu Apr 4 14:09:15 CEST 2013

Sorry that should be:
git fetch git://github.com/fishcakez/otp.git fix-supervisor-multi-restart

On 4 April 2013 13:05, James Fish <> wrote:

> Hi,
> When a child in a rest_for_one or one_for_all supervisor dies and is then
> restarted but a child later in the child specification fails to start - so
> that the restart fails - the restarted child's pid is ignored by the
> supervisor and is not terminated. The supervisor will then attempt to
> restart that child again - leaving the unaccounted for process alive!
> An example of this is available here:
> https://gist.github.com/fishcakez/5296408
> In this patch the supervisor changes the restarting child to the one that
> failed to start. In the case of one_for_all this means that the
> successfully restarted child is terminated (along with the other
> successfully restarted children). In the case of rest_for_one all
> successfully restarted children remain, and restarting begins with the
> child that failed to start. Should this be document? The way a rest_for_one
> handles this case is not documented.
> git fetch git://github.com/fishcakez/otp.git fix-server-multi-restart
> https://github.com/fishcakez/otp/compare/fix-supervisor-multi-restart
> https://github.com/fishcakez/otp/compare/fix-supervisor-multi-restart.patch
> King Regards,
> James
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-patches/attachments/20130404/34973631/attachment.html>

More information about the erlang-patches mailing list