¿Cuál es una buena forma de mantener el estado al reiniciar un proceso bloqueado?¿Cómo puedo restaurar el estado del proceso después de un bloqueo?
Tengo un supervisor en una aplicación OTP que mira varios gen_servers "subsistema".
Por ejemplo, uno es un subsistema "clima" que genera un nuevo estado del tiempo cada 15 minutos y maneja las consultas para el estado del tiempo actual. (Piensa en el juego de la limonada)
Si gen_server falla, quiero que se reinicie, pero debe reiniciarse con el estado meteorológico más reciente, no con un estado arbitrario codificado en init(). No tendría sentido que el estado de simulación pase repentinamente de "tormenta de granizo" a "agradable y ventoso" solo por el accidente.
Dudo en usar mnesia o ETS para almacenar el estado después de cada actualización debido a la complejidad añadida; ¿hay una manera mas facil?
El supervisor debe contener la menor lógica posible y ser responsable de los reinicios solamente. Un solo error en esa lógica podría llevar a un subárbol completo a bloquearse. –