L'heure effective des backups dérive d'une heure à chaque itération #3

Closed
opened 2019-04-19 21:52:03 +00:00 by karthanistyr · 2 comments
Owner

@karthanistyr

Héhé
bug marrant: le backup d'un service donné "dérive" d'une heure à chaque passage
prenons un service dont on veut faire un backup toutes les 24h (= 86400 secondes)
le démon est réveillé toutes les heures par cron, à la minute 0 (ce qui en langage cron veut dire :00:01).
le temps de se réveiller, trouver la config, charger la config et déterminer le taf à faire il s'est écoulé 1 à 2 secondes.
donc le démon enregistre "je commence mes backups à :00:03" et taggue les backups à ce timestamp précis
s'écoulent 24 heures et 23 itérations de backup sans évènement
arrive la 24ème heure où on s'attend à ce que le backup soit à nouveau fait
et là, paf, c'est une race condition: le démon lit la config et regarde le taf à faire, mais le précédent backup n'avait eu lieu que 23:59:58 avant cette seconde précise
et donc il pense n'avoi encore rien à faire et s'endort à nouveau, pour ne se réveiller qu'une heure après et réaliser le backup avec effectivement :59:58 de retard

https://matrix.draak.fr:8080/#/room/#infra:draak.fr/$1555709964206vbOsL:draak.fr

@karthanistyr >Héhé bug marrant: le backup d'un service donné "dérive" d'une heure à chaque passage prenons un service dont on veut faire un backup toutes les 24h (= 86400 secondes) le démon est réveillé toutes les heures par cron, à la minute 0 (ce qui en langage cron veut dire :00:01). le temps de se réveiller, trouver la config, charger la config et déterminer le taf à faire il s'est écoulé 1 à 2 secondes. donc le démon enregistre "je commence mes backups à :00:03" et taggue les backups à ce timestamp précis s'écoulent 24 heures et 23 itérations de backup sans évènement arrive la 24ème heure où on s'attend à ce que le backup soit à nouveau fait et là, paf, c'est une race condition: le démon lit la config et regarde le taf à faire, mais le précédent backup n'avait eu lieu que 23:59:58 avant cette seconde précise et donc il pense n'avoi encore rien à faire et s'endort à nouveau, pour ne se réveiller qu'une heure après et réaliser le backup avec effectivement :59:58 de retard https://matrix.draak.fr:8080/#/room/#infra:draak.fr/$1555709964206vbOsL:draak.fr
Author
Owner

solution: noter le timestamp et utiliser la même valeur pour déterminer le taf à faire et tagguer les backups

solution: noter le timestamp et utiliser la même valeur pour déterminer le taf à faire et tagguer les backups
Author
Owner

Corrigée par #4

Corrigée par #4
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
barbedfr/backup-tools#3
No description provided.