Anomalie #16513
ouvert[Versement ] Trop de fichiers ouverts lors du traitement des transferts
Description
Lorsque le service de traitement des bordereaux de transfert prend en charge un nombre important de ressources à déposer (beaucoup de bordereaux ou un bordereau avec beaucoup de fichiers joints), le processus se termine en erreur, indiquant que le nombre maximum de fichiers ouverts simultanément a été atteint.
Ce problème existe depuis que les échanges de données utilisent des pointeurs de fichier au lieu d'un chargement en mémoire.
Par défaut, la imite du nombre de fichiers ouverts simultanément (par fopen) par un processus est de 1024.
Il faut déjà donc prendre en compte cette limitation pour les lots importants en augmentant la limite système : https://www.tecmint.com/increase-set-open-file-limits-in-linux/
Nous devons aussi vérifier que les fichiers ouverts pour un bordereau sont fermés après traitement de celui-ci.
Le processus est le suivant:
- medona/archiveTransfer::processBatch()
pour chaque bordereau- appelle process()
- medona/archiveTransfer::process()
pour chaque bordereau- appelle le contrôleur d'empaquetage associé au schéma (SEDA2 par exemple) qui retourne un tableau d'archives (et leurs pointeurs de ressource) et un tableau de relations
- boucle sur les archives pour réaliser le dépôt
- boucle sur les relations pour les déclarer
Il faut vérifier que les pointeurs vers les ressources des archives soient fermés après dépôt.