- Orchestration de conteneurs : pods susceptibles d’être évincés ou arrêtés faute de mémoire avant que les threads d’arrière-plan aient fini de téléverser les traces.
- Entraînement distribué : plusieurs processus écrivent des traces en parallèle, et l’un d’eux peut échouer.
- Réseaux peu fiables : environnements où la connectivité au serveur Weave est intermittente.
- Tâches par lots : tâches de longue durée pour lesquelles la perte de données de trace à la suite d’un plantage serait coûteuse.
weave.flush() ou weave.finish() avant la fin du processus afin de vous assurer que toutes les données sont téléversées. Voir Perte de données de trace dans les processus worker pour plus d’informations.
Le journal à écriture anticipée doit actuellement être activé explicitement. Il sera activé par défaut dans une future version.
Activer le journal à écriture anticipée
WEAVE_ENABLE_WAL sur true :
weave.init() :
Fonctionnement
- Chaque appel à l’API Weave (création d’objet, début d’appel, fin d’appel, etc.) est ajouté à un fichier JSONL sur disque au lieu d’être conservé uniquement en mémoire.
- Chaque processus écrit dans son propre fichier journal, afin que les processus parallèles n’entrent pas en conflit.
- Un processus d’envoi en arrière-plan lit les fichiers journaux et envoie leur contenu au serveur Weave.
- Une fois les données envoyées avec succès, le fichier journal est supprimé.
.weave/wal/ dans votre répertoire de travail, organisés par entité et par projet. Chaque fichier contient les requêtes brutes de l’API sous forme d’objets JSON, à raison d’un objet par ligne.
Au démarrage du client, celui-ci vérifie s’il existe des fichiers journaux issus d’exécutions précédentes. S’il en trouve, le processus d’envoi les transmet avec les nouvelles données. Cela signifie que les données écrites par un processus qui a planté sont automatiquement récupérées au prochain démarrage du client.
Variables d’environnement
| Variable | Type | Default | Description |
|---|---|---|---|
WEAVE_ENABLE_WAL | bool | false | Active le journal à écriture anticipée. Lorsqu’elle est définie sur true, Weave écrit les requêtes d’API localement sur le disque avant de les envoyer au serveur. |
WEAVE_DISABLE_WAL_SENDER | bool | false | Désactive l’expéditeur WAL. Lorsqu’elle est définie sur true, Weave écrit les requêtes localement sur le disque, mais ne les transmet pas au serveur. C’est utile pour le débogage. |