Aller au contenu

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.

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

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.

Quand une simulation démarre avec un nom qui correspond à un snapshot existant :

  1. Le snapshot est validé avec les schémas Zod
  2. Les instances de démarrage pré-chargées sont effacées
  3. Les instances sont restaurées avec leurs IDs exacts, heures de fonctionnement, étapes de cycle de vie et défaillances actives
  4. Les assignations de runs de template sont restaurées
  5. Les adaptateurs activés sont réactivés avec leur configuration persistée
  6. 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.

Supprimez l’état persisté avec la commande reset :

Réinitialiser la simulation (supprimer toutes les instances, conserver la persistance) :

Fenêtre de terminal
miravo reset

Réinitialiser la simulation et effacer l’état persisté :

Fenêtre de terminal
miravo reset --clear-persistence

Ou via l’API admin :

Fenêtre de terminal
curl -s http://127.0.0.1:8080/commands \
-H 'content-type: application/json' \
-d '{"type":"resetSimulation","clearPersistence":true}'
ConfigDéfautDescription
MIRAVO_HOME~/.miravoRé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/miravo
environment:
MIRAVO_HOME: /data/miravo
  • 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