[erlang-questions] patterns or best practices to shut applications down?

Fred Hebert mononcqc@REDACTED
Sat Dec 23 15:41:49 CET 2017


On 12/23, Xavier Noria wrote:
>
>But there's something that bugs me and prevents me from imagining complete
>and round solutions, which is shutting down. When shutting down (think
>autoescaling, deploys, etc.). I have a live system that needs to stop
>orderly.
>
>Are there patterns or best practises about how to design this aspect of the
>system?

Good news! You already have this covered with OTP.

When shutting down a supervision tree, the supervisor will send down a 
`shutdown` exit signal to each of its children in order. A child 
supervisor will trap exit on this, and forward it to its own children 
first.

If your worker has nothing special to do, just let it die. If it needs 
some special cleanup, trap exit in the worker and `terminate` will be 
called.

So the supervision structure you have that tells how the program boots 
also tells how it shuts down. You do have to be careful about the 
handling of timeouts though (or brutal_kill will catch you up).



More information about the erlang-questions mailing list