[erlang-questions] Cannot add supervisor to application's supervisor in runtime

Siri Hansen <>
Tue Sep 8 15:42:38 CEST 2015


Can you see if your app_sup:init function is called during the upgrade? It
should be called from supervisor:code_change/3 as a result of this
instruction: {code_change,up,[{app_sup,[]}]}. What does it return?
Unfortunately the real time error reporting here is not very good.

Do the code paths look correct after the upgrade?

Regards
/


2015-09-08 10:04 GMT+02:00 Ameretat Reith <>:

> 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
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20150908/24018af2/attachment.html>


More information about the erlang-questions mailing list