[erlang-questions] simple_one_for_one supervisor, transient restart strategy

Arif Ishaq arif.ishaq@REDACTED
Thu Dec 13 16:06:09 CET 2012


I have tried this with R15B and it works for me. 

In practice, I have the child implemented as a gen_server which handles messages stopnormal, stopshutdown and stopabort treated with {stop, normal, State}, {stop, shutdown, State} and {stop, abort, State} respectively. When I send the messages stopnormal or stopshutdown, the child dies without getting restarted. When I send a stopabort, it gets restarted with the arguments with which it was created.

Can you please post your code to see what went wrong? 


-----Original Message-----
From: Paul Peregud [mailto:paulperegud@REDACTED] 
Sent: mercoledì 12 dicembre 2012 16.20
To: erlang-questions@REDACTED
Subject: [erlang-questions] simple_one_for_one supervisor, transient restart strategy

I've searched mailing list for this question and found nothing.

There is this one peculiar behavior when you use simple_one_for_one with transient strategy. You do supervisor:start_child(Ref, Args), the child executes and if it dies gracefully everything is fine, child is removed from supervisor tree. However, if it fails, it is restarted WITHOUT Args.

This combination of type/strategy would be a great tool for fire-and-forget tasks if it was not for that small issue.

Is it a bug or is it a feature?

Best regards,
Paul Peregud

More information about the erlang-questions mailing list