我试图了解这里发生了什么:
我有一个主管在不触发MaxR, MaxT
机制的情况下循环重启一个客户端。客户端只是缓慢地崩溃,永远不会触发速率限制。
将有另一种机制使用supervisor:which_children/1
并delete_child/2, start_child/2
调整子集以适应现实(它扫描 USB 设备,试图让每个设备找到一个监督子)。
这通常表现为速率限制的安全网,但奇怪的是,它看起来根本没有调用删除和启动子项的机制。
为了找出发生了什么,我supervisor:which_children/1
从 shell 调用,看起来调用只是阻塞并且永远不会返回。
是否会在它忙于尝试重新启动孩子时阻止对主管的呼叫?
附录:
看起来崩溃发生在子启动期间:
=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}]