所以我有这个应用程序,它有一个进程,需要一些 gen_servers 在集群的其他地方存活。
如果它们启动它就可以工作,如果它们不是,我的 gen_server 在 init 中失败{error,Reason}
,这会通过我的主管传播到我的应用程序start
函数中。
问题是,如果我返回 {ok,Pid} 以外的任何内容,我会收到崩溃报告。
我的意图是以某种方式表明应用程序无法正常启动并且所有进程都已关闭,因此不应将应用程序视为处于活动状态,但是,我只能选择返回 {ok, self()}并查看我的应用程序未列出的active
情况,或返回 {error, Error} 并查看它是如何崩溃的:
{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]}},{ancestors,[rtb_sup,<0.134.0>]},
{messages,[]},{links,[<0.135.0>]},{dictionary,[]},{trap_exit,false},{status,running},
{heap_size,377},{stack_size,24},{reductions,255}],[]]:\n"
问题似乎比这更大,基本上没有办法告诉应用程序框架应用程序失败了。它可能看起来像是在 erlang 中处理的这些事情之一let the process die
,但允许{error, }
返回值application:start
似乎是一个很好的权衡。
有什么提示吗?