ここで何が起こっているのかを理解しようとしています:
MaxR, MaxT
メカニズムをトリガーせずに 1 つのクライアントを周期的に再起動しているスーパーバイザがいます。クライアントは、レート制限をトリガーしないほどゆっくりとクラッシュします。
supervisor:which_children/1
子のセットを使用して実際に適応させる別のメカニズムがあったはずdelete_child/2, start_child/2
です (USB デバイスをスキャンして、見つかったデバイスごとに 1 つのスーパーバイザーの子を持たせようとします)。
これは通常、レート制限に対するセーフティ ネットのように動作しますが、奇妙なことに、子を削除して開始するメカニズムがまったく呼び出されないように見えます。
何が起こっているのかを知るためにsupervisor:which_children/1
、シェルから呼び出しましたが、呼び出しがブロックされ、返されないように見えます。
スーパーバイザが子を再起動しようとしている間、スーパーバイザへの呼び出しがブロックされる可能性はありますか?
補遺:
子の開始中にクラッシュが発生したようです:
=SUPERVISOR REPORT==== 29-Mar-2011::21:36:20 ===
Supervisor: {local,gateway_sup}
Context: start_error
Reason: {'EXIT',{timeout,{gen_server,call,[<0.155.0>,late_init]}}}
Offender: [{pid,<0.76.0>},
{name,gw_3_5},
{mfa,{channel,start_link,
[[{gateways,[{left,108},{right,103}]}],
{3,5}]}},
{restart_type,transient},
{shutdown,10000},
{child_type,worker}]