Projet

Général

Profil

Anomalie #16513

Mis à jour par Cyril VAZQUEZ il y a environ 3 ans

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.
Avec le service Apache cette limite semble plus élevée car le lancement de la tâche planifiée en interactif ne provoque pas le problème.


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.


Retour