Persistance
Préservez l'état de simulation entre les redémarrages avec le système de snapshots de Miravo — instances, étapes de cycle de vie, défaillances actives et adaptateurs.
Miravo persiste l’état de simulation sur disque pour que les redémarrages reprennent là où ils s’étaient arrêtés.
Comment ça fonctionne
Section intitulée « Comment ça fonctionne »L’état est sauvegardé en tant que snapshot JSON dans ~/.miravo/state/{nomSimulation}.json (ou $MIRAVO_HOME/state/). Le snapshot capture :
- Toutes les instances actives avec leurs IDs, chemins de navigation et paramètres
- Les heures de fonctionnement et l’étape de cycle de vie par instance
- Les défaillances actives par instance
- Les assignations de runs de template
- Les adaptateurs activés et leur configuration
Sauvegarde automatique
Section intitulée « Sauvegarde automatique »Miravo anti-rebond les changements structurels et écrit un snapshot quand :
- Des instances sont créées ou supprimées
- Des templates sont chargés ou déchargés
- Des adaptateurs sont activés ou désactivés
- La simulation s’arrête gracieusement
Un snapshot de démarrage est écrit immédiatement après la réconciliation de démarrage, avant le premier tick.
Restauration au démarrage
Section intitulée « Restauration au démarrage »Quand une simulation démarre avec un nom qui correspond à un snapshot existant :
- Le snapshot est validé avec les schémas Zod
- Les instances de démarrage pré-chargées sont effacées
- Les instances sont restaurées avec leurs IDs exacts, heures de fonctionnement, étapes de cycle de vie et défaillances actives
- Les assignations de runs de template sont restaurées
- Les adaptateurs activés sont réactivés avec leur configuration persistée
- Les compteurs de spawn avancent au-delà des IDs numériques restaurés pour éviter les collisions
Le snapshot est autoritaire — il remplace toute configuration de démarrage.
Effacer l’état
Section intitulée « Effacer l’état »Supprimez l’état persisté avec la commande reset :
Réinitialiser la simulation (supprimer toutes les instances, conserver la persistance) :
miravo resetRéinitialiser la simulation et effacer l’état persisté :
miravo reset --clear-persistenceOu via l’API admin :
curl -s http://127.0.0.1:8080/commands \ -H 'content-type: application/json' \ -d '{"type":"resetSimulation","clearPersistence":true}'Emplacement de la persistance
Section intitulée « Emplacement de la persistance »| Config | Défaut | Description |
|---|---|---|
MIRAVO_HOME | ~/.miravo | Répertoire de base |
| — | $MIRAVO_HOME/state/ | Répertoire des snapshots |
Dans Docker, montez un volume pour préserver l’état entre les redémarrages du conteneur :
volumes: - ./miravo-data:/data/miravoenvironment: MIRAVO_HOME: /data/miravoCe qui n’est pas persisté
Section intitulée « Ce qui n’est pas persisté »- Les valeurs actuelles des membres (régénérées par les générateurs à chaque tick)
- L’état du générateur aléatoire (le RNG avec graine est déterministe depuis la graine, mais la position exacte dans la séquence n’est pas sauvegardée)
- Les messages MQTT en transit ou les souscriptions OPC UA