[erlang-patches] Supervisor shutdown reason when reaching max restarts
Tobias Schlager
Tobias.Schlager@REDACTED
Thu Jul 4 16:44:12 CEST 2013
Hi,
this patch changes the behaviour of supervisors to exit with a more specific reason when exiting due to a maximum restart limit hit. This is especially useful (or even necessary) to distinguish between normal and erroneous process terminations when monitoring a supervisor from another process.
In the above case a supervisor would now exit with {shutdown, {reached_max_restart_intensity, Child}} where Child is whatever is available to describe the child, either a child id or in case of a simple_one_for_one supervisor the offending child's process id. The patch should not affect the OTP restart behaviour (also for cascaded supervisors) since a subclass of 'normal' exit reasons is used.
I'm aware that there is some potential backward incompatibility for people that do not expect {shutdown, Reason} when monitoring a supervisor. However, the feature of exiting normally with {shutdown, Reason} has been around for quite a while now and I think this could be a sensible place to use it. Let me know what you think.
The patch does include tests and updated documentation.
git fetch https://github.com/schlagert/otp.git supervisor_shutdown_reason
https://github.com/schlagert/otp/compare/erlang:master...supervisor_shutdown_reason
https://github.com/schlagert/otp/compare/erlang:master...supervisor_shutdown_reason.patch
Regards
Tobias
More information about the erlang-patches
mailing list