Closed brrd closed 3 years ago
Les exception levées ici sont : QuotaExceededError: The quota has been exceeded.
et DOMException: "The quota has been exceeded."
Cela vient du fait que le localStorage (= le "cache" de Checklist) est plein. Il y a une limite à la taille du localStorage, qui change selon le navigateur (on peut la mesurer ici). Par exemple dans mon navigateur (FF 75 win 10) le maximum est à un peu plus de 5 million de caractères, soit un peu plus de 10 Mo (localStorage est encodé en UTF-16).
En clair ce problème survient quand le nombre de tests en cache est trop élevé (raison pour laquelle cela arrive sur une revue qui comporte énormément d'articles et pourquoi vider le cache résout le problème). Ce problème est renforcé par le fait que toutes les revues sont maintenant sur le même domaine https://journals.openedition.org/ et partagent donc le même localStorage (ce qui n'est pas le cas avec des sous-domaines façon site.revues.org).
Il n'y a pas de solution radicale vu qu'il y aura toujours une limite, mais plusieurs façon d'améliorer ça.
D'abord, lorsque cette exception est rencontrée, proposer à l'utilisateur de vider le cache de checklist et de redémarrer. S'il refuse, poursuivre quand même la relecture (mais l'avertir que les résultats ne seront pas mémorisés).
Mais surtout il faudrait reprendre le cache de Checklist pour réduire drastiquement la quantité de données stockées. Actuellement il y a énormément de données inutiles mises en cache, ce qui est bien pratique pour les réafficher sans rien exécuter, mais qui est beaucoup trop gourmand en stockage. Par exemple un enregistrement qui correspond à un article avec une seule notification stocke plus de 6000 caractères juste pour une notification affichée 😟 On devrait pouvoir réduire ça à une centaine de caractères en ne stockant que des ids de tests positifs et en recalculant le reste.
Ça devrait déjà nous donner pas mal d'oxygène.
Et si tout cela ne suffisait pas, il y aurait encore moyen ultime d'améliorer ça en décidant d'exécuter checklist sur des sous-domaines correspondant à chaque revue (façon site.checklist.openedition.org). Mais on n'en est pas là.
C'est corrigé dans le noyau (mais pas encore déployé sur la VM de test).
Ce correctif change principalement deux choses :
C'est à jour sur la VM.
Voir #35
Je viens de retester en lançant cinq numéros d'un coup et l'erreur est la suivante : "Erreur lors du chargement de la source : 2773." (2773 étant l'ID du document). En tous cas c'est hyper bien géré dans le template par contre, chaque document est rayé / grisé :
Si je clic sur "Reéssayer", j'obtiens à nouveau l'erreur mais une couleur de vérification apparaît en fond :
Du coup je me demande si la vérif a bien été faite et si le signe "Attention" ne reste pas par erreur. Si je rafraichis, les 6 erreurs se transforment en 6 documents non vérifiés, et si je relance la vérification (que ce soit pas "contrôler tout" ou sur chaque document), j'obtiens à nouveau la même erreur.
Si je vide le cache et que je relance la vérification sur le même numéro, sans quitter la page, je n'ai plus aucune erreur. Je t'ai créé un accès pour que tu puisses tester également.