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

Dawid Figiel <>
Tue Mar 20 17:44:46 CET 2012


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 <> 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 <>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
>> 
>> http://erlang.org/mailman/listinfo/erlang-questions
>>
>



More information about the erlang-questions mailing list