aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMagnus Henoch <[email protected]>2016-09-05 15:28:44 +0100
committerMagnus Henoch <[email protected]>2016-09-05 15:28:44 +0100
commit2a56d0ed91c1c5e18008d1cf37406f36b46b4e62 (patch)
treee4f14e4754ab3e3b180b1b116005bafeb857c538
parent076098cebd1885ec5a56575d910322a6f1de67ff (diff)
downloadotp-2a56d0ed91c1c5e18008d1cf37406f36b46b4e62.tar.gz
otp-2a56d0ed91c1c5e18008d1cf37406f36b46b4e62.tar.bz2
otp-2a56d0ed91c1c5e18008d1cf37406f36b46b4e62.zip
Don't report error for shutdown exit tuple
When a simple_one_for_one supervisor is shutting down, and a child exits with an exit reason of the form {shutdown, Term}, handle it as if the exit reason were 'shutdown', without printing an error report. This makes the behaviour of wait_dynamic_children match that of do_restart. This fixes ERL-163.
-rw-r--r--lib/stdlib/src/supervisor.erl4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/stdlib/src/supervisor.erl b/lib/stdlib/src/supervisor.erl
index c81e72689c..1cd65fbf18 100644
--- a/lib/stdlib/src/supervisor.erl
+++ b/lib/stdlib/src/supervisor.erl
@@ -1087,6 +1087,10 @@ wait_dynamic_children(#child{restart_type=RType} = Child, Pids, Sz,
wait_dynamic_children(Child, ?SETS:del_element(Pid, Pids), Sz-1,
TRef, EStack);
+ {'DOWN', _MRef, process, Pid, {shutdown, _}} ->
+ wait_dynamic_children(Child, ?SETS:del_element(Pid, Pids), Sz-1,
+ TRef, EStack);
+
{'DOWN', _MRef, process, Pid, normal} when RType =/= permanent ->
wait_dynamic_children(Child, ?SETS:del_element(Pid, Pids), Sz-1,
TRef, EStack);