[erlang-questions] Cannot add supervisor to application's supervisor in runtime
Ameretat Reith
ameretat.reith@REDACTED
Tue Sep 8 10:04:58 CEST 2015
Hi,
I'm trying to add new supervisor `ch_sup` and It's worker `ch` to
an application supervisor `app_sup` with this appup:
```
{"0.1.3",
[{"0.1.2",
[{add_module, ch},
{add_module, ch_sup},
{update, app_sup, supervisor},
{apply, {supervisor, restart_child, [app_sup, ch_sup]}}
]
}],
[{"0.1.2",
[{apply, {supervisor, terminate_child, [app_sup, ch_sup]}},
{apply, {supervisor, delete_child, [app_sup, ch_sup]}},
{update, app_sup, supervisor},
{delete_module, ch_sup},
{delete_module, ch}
]
}]
}.
```
And this relup generated by systools:make_relup:
```
{"0.0.3",
[{"0.0.2",[],
[{load_object_code,{app,"0.1.3",
[ch,ch_sup,app_sup]}},
point_of_no_return,
{load,{ch,brutal_purge,brutal_purge}},
{load,{ch_sup,brutal_purge,brutal_purge}},
{suspend,[app_sup]},
{load,{app_sup,brutal_purge,brutal_purge}},
{code_change,up,[{app_sup,[]}]},
{resume,[app_sup]},
{apply,{supervisor,restart_child,[app_sup,ch_sup]}}]}],
[{"0.0.2",[],
[{load_object_code,{app,"0.1.2",[app_sup]}},
point_of_no_return,
{apply,{supervisor,terminate_child,[app_sup,ch_sup]}},
{apply,{supervisor,delete_child,[app_sup,ch_sup]}},
{suspend,[app_sup]},
{load,{app_sup,brutal_purge,brutal_purge}},
{code_change,down,[{app_sup,[]}]},
{resume,[app_sup]},
{remove,{ch_sup,brutal_purge,brutal_purge}},
{purge,[ch_sup]},
{remove,{ch,brutal_purge,brutal_purge}},
{purge,[ch]}]}]}.
```
New release installs But app_sup's child spec wont change, neither
ch_sup start until I terminate app_sup and start It again with
`supervisor:restart_child(real_app_sup, app_sup)`. app is an
included application which is put in real_app's supervision tree. I
don't think app as an included application, should be regarded
special here, since I use It just as a supervisor. But seems I'm wrong..
So, What is the problem? Can I achieve changing app_sup's main
supervisor without restarting It's process?
Thanks
More information about the erlang-questions
mailing list