[erlang-questions] excute code in the supervisor when a child crashes?

Pablo Platt pablo.platt@REDACTED
Mon Oct 19 19:51:34 CEST 2009


>In that situation, you could just use
>supervisor:which_children to rebuild the table, I suppose.
Sounds much better.

>Of course, it would be easier to just ensure that process never dies. ;)
If there are no bugs in the module it will never die?






________________________________
From: Dave Smith <dizzyd@REDACTED>
To: Pablo Platt <pablo.platt@REDACTED>
Cc: erlang-questions@REDACTED
Sent: Mon, October 19, 2009 7:44:30 PM
Subject: Re: [erlang-questions] excute code in the supervisor when a child  crashes?

On Mon, Oct 19, 2009 at 11:39 AM, Pablo Platt <pablo.platt@REDACTED> wrote:
> Sounds like a good solution.
> I'll create a gen_server that will call supervisor:start_child
> then it'll monitor the pid and store it in an ETS so other clients will be
> able to send messags to the child.
> If the child exists or crashes the monitoring gen_server will delete the ETS
> record of this process.
>
> The complexity is if the monitoring process dies.
> In this case it needs to scan the whole ETS table, re-monitor all live
> process and delete records of all the dead processes.

Well, I suppose it depends on what process owns that ETS table. If
your gen_server owns the ETS table, that table will get deleted at
crash time. In that situation, you could just use
supervisor:which_children to rebuild the table, I suppose.

Of course, it would be easier to just ensure that process never dies. ;)

D.



      


More information about the erlang-questions mailing list