[erlang-questions] Is supervisor notified when child is restarted?
Tue Jul 28 17:23:35 CEST 2015
It sounds like you need either to use either registered names, process
groups, or the one_for_all strategy. Registered processes are the easiest
way, you can simply refer to them by the atom -- but you must expect that
sometimes messages will be lost if the process is restarting. Alternately,
if you change this supervisor's strategy to one_for_all you will ensure
that every process always has the correct state (assuming it already starts
up in the correct state), but existing work from non-failed processes can
be lost. For process groups, you can use pg2  which comes with OTP, or
there are several alternate implementations available on github, but
messaging the other processes in this small group will incur additional
Each solution has tradeoffs, I hope that helps you decide which one to use.
On Tue, Jul 28, 2015 at 10:03 AM, Martin Koroudjiev <mrtndimitrov@REDACTED>
> I am wondering how can I get notified when a child process is restarted?
> Imagine this simple scenario - supervisor with one_for_one strategy and
> 3 gen_servers as workers. Each in its state has the PIDs of the other 2
> and sends them messages. Now if one child gets restarted, the other 2
> will have the old PID. How can I notify them?
> I can't restart the whole supervision tree because the number of child
> processes is buried deep in the initialization logic of the application.
> erlang-questions mailing list
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the erlang-questions