Skip to content

Problème d'upload sur un NFS (trop lent ?)

Pour garder une trace et tenter de trouver une parade à un bug qu'on a chez Infini avec bigup. Le contexte, les fichiers des sites qu'on y héberge sont stockés sur un NFS (disque réseau) accessible depuis nos différentes VMs qui portent apache. Certainement à cause de la latence engendrée par le NFS, l'upload avec bigup échoue X fois sur Y, en renvoyant une erreur "Indiquez un fichier !".

Après pas mal d'échanges avec @maieul qui nous a remonté le bug, et suite à différents tests, j'ai trouvé ce qui semble être l'origine du problème dans la méthode trouver_fichiers() de la classe CacheRepertoire ici :

https://git.spip.net/spip/bigup/src/commit/482bc07f98189f8a5892b220a1e1711dccba08f6/inc/Bigup/CacheRepertoire.php#L83

Le test sur !is_dir($directory) renvoie parfois false, et génère le bug en question.

J'ai tenté pas mal de choses, comme :

Pour l'instant, la seule parade qui fonctionne est d'ajouter un sleep(1) (ou autre valeur) avant le test sur is_dir(), mais ça n'est pas viable...

Pour info, j'ai trouvé mention de ce type de bug chez nextcloud https://github.com/nextcloud/server/issues/7124 qui pour contourner un problème similaire avec is_writable() sur NFS applique le patch suivant https://github.com/nextcloud/server/pull/13237

Complément d'info : j'ai testé et confirmé le bug sur nos VMs PHP 7.2 et 7.4, avec SPIP 4.0, 4.1 et 3.2 plus bigup.