-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
protection de l'API pour des commandes concurrentes sur la même branche #425
base: master
Are you sure you want to change the base?
Conversation
Pull Request Test Coverage Report for Build 9744546129Details
💛 - Coveralls |
8ce6c97
to
c6726fe
Compare
Pull Request Test Coverage Report for Build 9759201786Details
💛 - Coveralls |
J'ai testé en local sous Linux et je n'ai pas observé de ralentissement sur mes petits caches. |
Testé sur l'infra de production: j'ai l'impression que le code fonctionne, mais visiblement le verrouillage n'est pas suffisant dans le cas où on utilise deux serveurs. Je pense qu'il y a un mécanisme de cache sur les montages NFS du store. Du coup, le traitement est vu comme terminé sur un serveur, mais l'état n'est pas encore cohérent sur l'autre serveur. C'est tout de même beaucoup moins fréquent. Il reste encore la possibilité d'intercepter l'erreur du rename (voir exemple ci-dessous) puisque maintenant on sait qu'en attendant un peu avant une nouvelle tentative ça devrait fonctionner. (node:172225) UnhandledPromiseRejectionWarning: Error: ENOENT: no such file or directory, rename '/mnt/store-SIA/PACKO/cache_ortho_tipi/cache_packo/graph/21/00/00/22/YA/232_G0.tif' -> '/mnt/store-SIA/PACKO/cache_ortho_tipi/cache_packo/graph/21/00/00/22/YA/232_G0_1.tif' |
Pull Request Test Coverage Report for Build 10097129156Details
💛 - Coveralls |
J'ai poussé une nouvelle version qui vérifie l'accès à tous les fichiers avant de commencer les renommages (pour les undo/redo). En cas d'erreur sur l'un des fichiers: on ne fait rien et on informe l'utilisateur. Cela évite de faire les modifs à moitié et de compromettre l'intégrité du cache (et de bloquer l'API avec un exception non gérée). |
Propositions de modification liées à #418
Cette PR est basé sur #417 qui devrait être mergée avant cette PR.
Testée uniquement en local et sous windows, à valider sous Linux avec une attention particulière sur les performances et l'impact sur l'utilisation de la BD Postgres.