Quel est un bon moyen de conserver l'état lors du redémarrage d'un processus planté?Comment puis-je restaurer l'état du processus après un plantage?
J'ai un superviseur dans une application OTP qui surveille plusieurs serveurs "sous-système". Par exemple, un sous-système «météo» génère un nouvel état météorologique toutes les 15 minutes et gère les requêtes relatives à l'état actuel de la météo. (Pensez au jeu de stand de limonade)
Si gen_server tombe en panne, je veux qu'il soit redémarré, mais il devrait être redémarré avec l'état météo le plus récent, pas un état arbitraire codé en dur dans init(). Il ne serait pas logique que l'état de simulation passe soudainement de «tempête de grêle» à «agréable et venteux» juste à cause de l'accident. J'hésite à utiliser mnesia ou ETS pour stocker l'état après chaque mise à jour en raison de la complexité ajoutée; Y a-t-il un moyen plus facile?
Le superviseur doit contenir le moins de logique possible et être responsable des redémarrages seulement. Un seul bogue dans cette logique pourrait entraîner le crash d'un sous-arbre entier. –