Ceci était le résultat d’un changement de titre de sujet où le bloc d’événement ne se trouvait pas dans le premier message — les publications ont été fusionnées tout en préservant la chronologie.
L’historique a été affiché dans une notification de modification pour un message qui n’était ni le premier du sujet, ni le premier message historique. L’utilisateur ayant reçu la notification de modification ne suit pas le sujet.
Le code définit donc un budget : un nombre maximal de comparaisons qu’il est autorisé à effectuer avant de devoir s’arrêter et déclarer « c’est trop difficile ».
Comment le budget est-il calculé ?
Il prend la taille combinée des deux textes et la multiplie par 200. Les textes plus volumineux obtiennent un budget plus élevé.
Cependant, il existe un plafond absolu de 2 millions de comparaisons — peu importe la taille des textes, il n’essaiera jamais d’en faire plus que cela.
Que se passe-t-il lorsque le budget est épuisé ?
Le code lève la main et dit « j’abandonne » — il lève une erreur (DiffLimitExceeded) plutôt que de laisser le serveur tourner pendant des secondes ou des minutes