重新启动 => erlang 主管的瞬态与永久
Posted
技术标签:
【中文标题】重新启动 => erlang 主管的瞬态与永久【英文标题】:restart=>transient vs permanent for erlang supervisor 【发布时间】:2021-01-30 11:03:21 【问题描述】:我有一个 3 级监督树结构,其中顶层是一个监督者,它产生第二级监督者,后者产生工人。 二级主管和工人都有一个瞬态重启策略。 现在我的工人崩溃并重新启动 max_restart 次。此时,我希望主管崩溃 max_restart 次数,然后***主管崩溃。但是我的二级主管死了,一级主管没有重新启动它。二级主管崩溃了这个日志
Context: shutdown
Reason: reached_max_restart_intensity
这是否被认为是“正常”关闭,因此主管没有重新启动,因为我使用的是瞬态重启策略?如果我们希望中级主管重新启动,是否应该始终使用 restart=permanent ?
【问题讨论】:
【参考方案1】:来自supervisor documentation:
只有在异常终止时才会重新启动瞬态子进程,也就是说,除了正常、关闭或 shutdown,Term 之外的其他退出原因。
由于退出原因是 shutdown
,因此您需要使用不同的 restart
策略。
【讨论】:
以上是关于重新启动 => erlang 主管的瞬态与永久的主要内容,如果未能解决你的问题,请参考以下文章
Hibernate oneToMany - 对象引用一个未保存的瞬态实例