Erlang supervisor restart interval
-
06-07-2021 - |
Pergunta
I have a supervisor with one_for_one
restart strategy.
Is it possible to set some time interval between child process restarting?
For example, the remote db crushed and I want to wait 10 seconds between restore connection attempts.
Solução
Actually, you could let the supervisor to immediately restart its children and implement what is called lazy initialization:
- The supervisor (re)starts (immediately) the child (say, a gen_server)
- The gen_server returns a 0 timeout in its init function
- In the handle_info you do an active wait (your 10 seconds) to ensure the DB is properly initialized
This way, you ensure that all requests to the gen_server are processed after the DB is properly initialized.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow