Contacter l'assistance

Nous répondons par e-mail, en général sous deux jours.

Pour prévenir les abus, Google reCAPTCHA vérifie cet envoi ; des données sont transmises à Google. Le script n'est chargé qu'à l'ouverture de ce formulaire.

← Tous les articles

Ce que supprimer un compteur touche vraiment

Supprimer un compteur vide ici 33 tables. Hier, cela en vidait 25.

Les huit qui manquaient avaient toutes été créées la veille, entre 11 h 10 le matin et 15 h 10 l'après-midi.

33 tables savent quelque chose d'un compteur 8 d'entre elles n'étaient pas vidées — toutes créées la veille ces huit contenaient 4 840 lignes à elles toutes ajoutées aujourd'hui, à leur place alphabétique, pas à la fin 25 lignes orphelines trouvées dans d'autres tables et supprimées

Comment fonctionne la suppression

Un propriétaire peut supprimer son compteur. Il faut un POST, le jeton du propriétaire et le numéro du compteur recopié à la main, car il n'y a pas de retour en arrière. Rien n'est mis de côté : une copie de l'ombre serait le contraire de ce qui a été demandé, et les liens d'export sont au-dessus du bouton pour qui en veut une.

Ensuite une liste de tables est vidée en une seule transaction, la table principale en dernier, et une pierre tombale part à l'archive pour que le numéro ne puisse jamais aller à quelqu'un d'autre. Si une partie échoue, l'ensemble est annulé. Rien de supprimé vaut mieux qu'à moitié supprimé.

Au-dessus de cette liste, dans le fichier, il y a ceci :

« Chaque table qui sait quelque chose de ce compteur. En liste et non éparpillé dans le code : ce qui manque ici reste comme ligne orpheline, et personne ne s'en aperçoit. »

Elle a décrit sa propre défaillance un jour à l'avance

Hier, six nouvelles tables sont apparues pour une nouvelle fonctionnalité — temps passé, profondeur de défilement, pages de sortie — et deux autres avec. Entre 11 h 10 et 15 h 10.

La liste de suppression a été modifiée ce même jour, pour y ajouter une autre table nouvelle. Les huit sont arrivées après, et la liste n'a plus bougé. Depuis hier après-midi, supprimer un compteur laissait donc derrière lui 4 840 lignes de données de comportement, réparties sur huit tables, appartenant à des gens qui avaient demandé à être oubliés.

Ce n'est pas une histoire de négligence. Quelqu'un a écrit cette liste, compris exactement pourquoi c'était une liste, noté ce qui arrive quand elle prend du retard — et l'a mise à jour ce jour-là pour une table. Et elle a quand même pris du retard, parce que tenir deux choses au pas en y pensant est une chose que les humains font de façon fiable jusqu'à l'après-midi où ils ne le font pas.

La correction, et l'autre correction

Les huit noms sont dans la liste maintenant. Ils ont été insérés à leur place alphabétique plutôt qu'ajoutés à la fin, parce qu'une liste triée rend un trou visible et une liste par ajouts non.

C'est la petite correction. Celle qui compte est un script qui demande à la base quelles tables portent un numéro de compteur, lit la liste dans le fichier source au lieu de la répéter, et compare. Celui qui ajoute une table le lance une fois. On ne peut pas l'oublier comme on oublie une liste, parce qu'il ne stocke rien — il déduit la réponse du schéma à chaque fois.

À sa première exécution, il a trouvé autre chose : 25 lignes dans huit tables de plus, dont le numéro de compteur ne figure ni dans la table vivante ni dans l'archive. Pas des compteurs supprimés — ceux-là laissent une pierre tombale. Des numéros n'appartenant à rien du tout, pour la plupart des numéros de test évidents d'avant l'existence de la vérification d'archive. Ils ont été écrits dans un fichier hors de la racine web, puis supprimés.

Ce que cela généralise

Toute liste qu'il faut tenir au pas avec autre chose finira par sortir du pas, et le trou sera invisible, car une liste à laquelle il manque une entrée ressemble exactement à une liste complète.

La défense n'est pas la discipline. C'est de déduire un côté de l'autre et de vérifier qu'ils s'accordent — et de lancer cette vérification au moment où quelqu'un ajoute la chose, pas au moment où quelqu'un se pose la question.

Le commentaire au-dessus de la liste avait raison sur tout sauf un mot. Il disait que personne ne s'en aperçoit. Quelqu'un s'en est aperçu, un jour plus tard, parce qu'il est allé voir avec un script au lieu de sa mémoire.

Publicité