[erlang-questions] preserving state through a gen_server restart

Ivan Uemlianin <>
Fri Oct 19 17:03:41 CEST 2012

Dear All

I have an erlang/OTP application consisting mostly of gen_servers.  One 
repeated pattern is having a gateway/aggregate gen_server process that 
provides access (and other management) to individual gen_server 
processes, e.g.:

              /        \      \
         my_lamb     my_lamb    my_lamb    ...

my_lambs' state variable holds a dictionary {LambName: LambPid} and 
among other functions it allows me to call lambs by name instead of my Pid.

If my_lambs terminates normally --- e.g., if the whole application is 
closing down --- its terminate/s function can call my:lamb:stop for each 
of the processes in its care.

However, if my_lambs terminates abnormally, and is restarted by my_sup, 
I think I'd like to preserve its state variable --- at least the Pids of 
the my_lamb processes --- so that it can be passed on to the new version 
of my_lambs.

I'd like to avoid losing all of the my_lamb processes, if the my_lambs 
process crashes.

Can state be passed to the supervisor, to be used when it restarts its 

Could I park the state variable in some kind of holding process, so that 
the new my_lambs can retrieve it?

Or is there another way of doing this?

With thanks and best wishes


Ivan A. Uemlianin PhD
Speech Technology Research and Development


               "hilaritas excessum habere nequit"
                  (Spinoza, Ethica, IV, XLII)

More information about the erlang-questions mailing list