[erlang-questions] terminate child under simple one for one supervisor

Zoltan Lajos Kis kiszl@REDACTED
Thu Aug 20 10:14:01 CEST 2009


That kind of child management is not possible with a simple_one_for_one 
"The functions terminate_child/2, delete_child/2 and restart_child/2 are 
invalid for simple_one_for_one supervisors and will return 
{error,simple_one_for_one} if the specified supervisor uses this restart 
strategy." (http://www.erlang.org/doc/man/supervisor.html)

If you need this, you can start a "regular" one_for_one supervisor with 
no initial children, and add the gen_fsm's later. Just be sure to use 
unique idenifiers for each them.


Thilani Abeysinghe wrote:
> hi,
> I have created following supervision tree.
> Sup1(one for all)  Under Sup1 there is Sup2(simple one for one)  and a
> gen_server Gen1(gen_server).
> Under Sup2(simple one for one) there is another gen_server.
> Gen2(gen_server).
> child is added by Gen1 calling supervisor:start_child(_,_)
> Gen2 starting successfuly.
> I want to know is there a way to stop the Gen2 gen_server.
> tried to use
> supervisor:terminate_child(SupRef, Id)
> it returned  {error,simple_one_for_one}
> ~Thilani Abeysinghe

More information about the erlang-questions mailing list