Projet

Général

Profil

Actions

Anomalie #7283

fermé

Erreur "Can't find free entry in vault. [reason Tous les coffres de fichiers sont saturés]"

Ajouté par Jérôme Augé il y a plus de 7 ans. Mis à jour il y a plus de 7 ans.

Statut:
Intégré
Priorité:
Haut
Assigné à:
Version cible:
Début:
04/10/2018
Echéance:
% réalisé:

100%

Temps estimé:
Version source:
Solution proposée:
Principaux fichiers impactés:
Complexité:
Contrôle:
Thème:
Socle technique
Régression:
Non

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 Jérôme Augé il y a plus de 7 ans

  • % réalisé changé de 0 à 100

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.

Actions

Formats disponibles : Atom PDF