Anomalie #7283
ferméErreur "Can't find free entry in vault. [reason Tous les coffres de fichiers sont saturés]"
100%
Description
Sur un système avec peu d'activité et qui ne manipule que des fichiers temporaires (qui ne sont jamais sorti de leur état temporaire), le script quotidien de nettoyage `cleanContext` peut mener à une situation ou plus aucun fichier ne pourra être inséré dans le système avec une erreur "Can't find free entry in vault. [reason Tous les coffres de fichiers sont saturés]".
Cas de reproduction :
- Soit un contexte vierge avec un vault vierge : `vaultdiskstorage` et `vaultdiskdirstorage` sont vides
dynacase=> SELECT * FROM vaultdiskstorage; id_file | id_fs | id_dir | public_access | size | name | id_tmp | mime_t | mime_s | cdate | mdate | adate | teng_state | teng_lname | teng_id_file | teng_comment ---------+-------+--------+---------------+------+------+--------+--------+--------+-------+-------+-------+------------+------------+--------------+-------------- (0 ligne) dynacase=> SELECT * FROM vaultdiskdirstorage; id_dir | id_fs | isfull | size | l_path --------+-------+--------+------+-------- (0 ligne)
- Je crée un fichier temporaire : une nouvelle entrée DIR est crée dans `vaultdiskdirstorage` et le fichier est enregistré dans `vaultdiskstorage` associé à l'entrée DIR
dynacase=> SELECT * FROM vaultdiskstorage;
-[ RECORD 1 ]-+---------------------------------
id_file | 4605370949697253401
id_fs | 10
id_dir | 10
public_access |
size | 219
name | test_temporary_file.txt
id_tmp | 661f3cd72ac453c6f6b971c4143036ed
mime_t | PHP script, ASCII text
mime_s | text/x-php
cdate | 2018-10-04 16:53:50
mdate | 2018-10-04 16:53:50
adate | 2018-10-04 16:53:50
teng_state |
teng_lname |
teng_id_file | 0
teng_comment |
dynacase=> SELECT * FROM vaultdiskdirstorage;
id_dir | id_fs | isfull | size | l_path
--------+-------+--------+------+--------
10 | 10 | f | | 1
(1 ligne)
- Je ne fais aucun nouvel ajout de fichiers (temporaires ou normaux) pendant 2 jours.
- L'API `cleanContext` s'exécute tous les jours et a une partie qui nettoie les fichiers temporaires au bout de 2 jours (par défaut).
- Si on attend donc 2 jours, le script d'API `cleanContext` s'exécute et il va supprimer le fichier et son enregistrement dans `vaultdiskstorage` mais laisser l'entrée DIR dans `vaultdiskdirstorage` :
dynacase=> SELECT * FROM vaultdiskstorage;
id_file | id_fs | id_dir | public_access | size | name | id_tmp | mime_t | mime_s | cdate | mdate | adate | teng_state | teng_lname | teng_id_file | teng_comment
---------+-------+--------+---------------+------+------+--------+--------+--------+-------+-------+-------+------------+------------+--------------+--------------
(0 ligne)
dynacase=> SELECT * FROM vaultdiskdirstorage;
id_dir | id_fs | isfull | size | l_path
--------+-------+--------+------+--------
10 | 10 | f | | 1
(1 ligne)
- À partir de ce moment là, tout ajout de fichier déclenchera une erreur : "Can't find free entry in vault. [reason Tous les coffres de fichiers sont saturés],"
- Pour pouvoir ajouter des fichier il faut alors alors supprimer manuellement l'entrée DIR dans `vaultdiskdirstorage` pour revenir à l'état initial.
- Si on ne fait qu'ajouter des fichiers temporaires et qu'on les laisse expirer, alors on retombera sur ce problème au bout de deux jours d'inactivité.
- Ce problème n’apparaît pas si au moins un fichier non-temporaire a été créé dans les 2 jours après l'installation du système.
Mis à jour par Marc Claverie il y a plus de 7 ans
- Statut changé de Nouveau à Assigné
- Assigné à mis à Jérôme Augé
- Version cible mis à 3.2.25
- Version source changé de 3.2.25 à 3.2.24
Mis à jour par Éric Brison il y a plus de 7 ans
- Statut changé de Assigné à Intégré
Appliqué par commit internal-platfrom:commit:8e491ab3e2689e6642e683222ad57dfe5fd53e5b.