[erlang-questions] How to clean up before termination...

tom kelly ttom.kelly@REDACTED
Tue Mar 20 17:52:17 CET 2012


I see what you mean now, I should have read the document you linked
properly before posting ;-)

It seems either gen_server or supervisor makes a decision on whether or not
to execute terminate/1 based on trap_exit being set. It's not immediately
obvious to me why that should be.

Time for a browse through the source...



On Tue, Mar 20, 2012 at 4:44 PM, Dawid Figiel <dawid.figiel@REDACTED>wrote:

> Heh..
>
> I read it view times, then I call someone to read this for me... then
> that someone becomes confused too ;)
>
> (1) We jump to terminate/1 when supervisor wants to shut down the
> gen_server.
> (2) Trap_exit lets you handle 'EXIT' signals from linked processes.
>
> What is the relation between (1) and (2).
> In my opinion function terminate has nothing to do with trap_exit.
>
> Regards,
>
> Dawid
>
>
> On 3/20/12, tom kelly <ttom.kelly@REDACTED> wrote:
> > Hi Dawid,
> >
> > You may have mis-read the documentation slightly, or else I misunderstand
> > your question.
> >
> > If trap_exit is set to true then the terminate function is called when
> the
> > gen_server is shutting down, if it is false then the terminate function
> is
> > never called. All cleanup should be done in terminate, nowhere else.
> >
> > Is this what you're asking?
> >
> > //TTom.
> >
> >
> >
> > On Tue, Mar 20, 2012 at 4:17 PM, Dawid Figiel <dawid.figiel@REDACTED
> >wrote:
> >
> >> Hi,
> >>
> >> There is a recommendation in Erlang doc, which is telling to set up
> >> the trap_exit to true in the gen_server:init, when want to do clean up
> >> before supervisor will terminate the gen_server.
> >>
> >>
> >>
> http://www.erlang.org/doc/design_principles/gen_server_concepts.html#id66567
> >>
> >> My question is:
> >> What for trap_exit has to be set to true when the clean up is needed?
> >>
> >> The place for doing some clean ups is under terminate function.
> >> We want to have trape_exit set to true when we need to handle 'EXIT'
> >> signals coming from linked processes to (for example) not crash
> >> gen_server.
> >>
> >> The only explanation for me is that the supervisor may crash too and
> >> send 'Exit' to gen_server as well... but this doesn't convince even
> >> myself.
> >>
> >> Has anyone some explanation for this advice ?
> >>
> >>
> >> Best,
> >>
> >> Dawid
> >> _______________________________________________
> >> erlang-questions mailing list
> >> erlang-questions@REDACTED
> >> http://erlang.org/mailman/listinfo/erlang-questions
> >>
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20120320/a7ef6aa4/attachment.htm>


More information about the erlang-questions mailing list