導向器

警告

  • 不要在你的計劃中使用'count'=>infinity 和元素 restart
    喜歡:
Childspec = #{id => foo
             ,start => {bar, baz, [arg1, arg2]}
             ,plan => [restart]
             ,count => infinity}.

如果你的程序在崩潰後沒有啟動,導演將鎖定並重試重啟你的過程 3 次! 如果你使用 infinity 作為'count',請始終在'plan'中使用 {restart, MiliSeconds} 而不是 restart

  • 如果你有以下計劃:
Childspec1 = #{id => foo
              ,start => {bar, baz}
              ,plan => [restart,restart,delete,wait,wait, {restart, 4000}]
              ,count => infinity}.

Childspec2 = #{id => foo
              ,start => {bar, baz}
              ,plan => [restart,restart,stop,wait, {restart, 20000}, restart]
              ,count => infinity}.

Childspec3 = #{id => foo
              ,start => {bar, baz}
              ,plan => [restart,restart,stop,wait, {restart, 20000}, restart]
              ,count => 0}.

Childspec4 = #{id => foo
              ,start => {bar, baz}
              ,plan => []
              ,count => infinity}.

Childspec1delete 元素的其餘部分和 Childspec2 中其餘的 stop 元素將永​​遠無法評估!
Childspec3 你想要執行你的計劃 0 次!
ChildSpec4 你沒有任何計劃執行 15 次!

  • 當你使用 release_handler 升級版本時,release_handler 會呼叫 supervisor:get_callback_module/1 來獲取其回撥模組。
    在 OTP <19 get_callback_module/1 中使用管理程式內部狀態記錄來給出其回撥模組。我們的主管不知道主管的內部狀態記錄,然後 supervisor:get_callback_module/1主管沒有合作。
    好訊息是,在 OTP> = 19 時,supervisor:get_callback_module/1導演 s :) 完美配合。
1> foo:start_link().
{ok,<0.105.0>}

2> supervisor:get_callback_module(foo_sup).
foo

3>