したがって、いくつかの gen_servers がクラスター内の別の場所で稼働している必要があるプロセスを持つこのアプリケーションがあります。
それらが稼働している場合は機能しますが、稼働していない場合、私の gen_server は init with で失敗し{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"
問題はこれよりも大きいようです。基本的に、アプリが失敗したことをアプリケーション フレームワークに伝える方法はありません。let the process die
erlang で処理されるものの 1 つに見えるかもしれませんが、{error, }
戻り値を許可することapplication:start
は良いトレードオフのように思えます。
ヒントはありますか?