如何更新实时代码升级的监督树?

时间:2016-09-02 19:02:07

标签: erlang elixir otp

我遇到的实时代码升级问题是监督树的结构发生了变化。监督类型MyApp.Worker1的流程和类型MyApp.Worker2的流程的主管现在还需要监督类型MyApp.Worker3的第三个流程。

更新MySupervisor.init/1将正确启动主管,但不会更改当前主管的结构,假设主管从不崩溃。

显然,我可以重新启动节点,但这会破坏实时代码升级的目的。如果我已经注册了主管,我可以my_app remote_console进入并手动执行Supervisor.start_child/2,但是对于许多节点进行广泛部署,手动干预是不可行的。

在实时代码升级期间更新监督树(添加和删除)的最佳做法是什么?理想情况下,这将考虑Erlang和Elixir模块之间的任何差异(也可以是跨语言兼容)

0 个答案:

没有答案