Was ist eine gute Möglichkeit, den Status beim Neustart eines abgestürzten Prozesses beizubehalten?Wie kann ich den Prozessstatus nach einem Absturz wiederherstellen?
Ich habe einen Supervisor in einer OTP-Anwendung, die mehrere "Subsystem" gen_servers beobachtet.
Zum Beispiel ist ein Subsystem "Wetter", das alle 15 Minuten einen neuen Wetterzustand generiert und Abfragen für den aktuellen Wetterzustand abwickelt. (Denken Sie an das Limonadenstand-Spiel)
Wenn dieser gen_server abstürzt, möchte ich, dass er neu gestartet wird, aber er sollte mit dem letzten Wetterzustand neu gestartet werden, nicht irgendein willkürlicher Zustand, der in init() fest codiert ist. Es wäre nicht sinnvoll, wenn der Simulationszustand plötzlich vom "Hagelsturm" zu "angenehm und luftig" würde, nur wegen des Crashs.
Ich zögere, wegen der zusätzlichen Komplexität nach jedem Update den MNS oder MMS zu verwenden, um den Zustand zu speichern; Gibt es einen leichteren Weg?
Der Supervisor sollte so wenig wie möglich Logik enthalten und nur für Neustarts verantwortlich sein. Ein einzelner Fehler in dieser Logik könnte dazu führen, dass ein ganzer Teilbaum abstürzt. –