クラッシュしたプロセスを再起動するときに状態を保持するにはどうすればよいですか?クラッシュ後にプロセスの状態を復元するにはどうすればよいですか?
私はいくつかの "サブシステム" gen_serversを監視するOTPアプリケーションにスーパーバイザを持っています。
例えば、1つは「天気」サブシステムで、15分ごとに新しい天気状態を生成し、天気の現在の状態のクエリを処理します。
このgen_serverがクラッシュした場合、再起動したいが、init()でハードコードされている最新の気象状態ではなく、最新の気象状態で再起動する必要があります。クラッシュのせいでシミュレーション状態が突然「雹の嵐」から「心地よくて気持ち良い」に変わるのは理にかなっていません。
複雑さが増したため、すべてのアップデート後に状態を保存するために、mnesiaまたはETSを使用することを躊躇します。簡単な方法はありますか?
スーパーバイザにはできるだけ論理が少なく、再起動の責任があります。そのロジックの単一のバグは、サブツリー全体がクラッシュする可能性があります。 –