Project

General

Profile

Bug #10447

La taille du dossier datastore de la JCR s'accroie au fil du temps

Added by Miguel Moquillon 6 months ago. Updated 6 months ago.

Status:
Closed
Priority:
Normal
Category:
-
Start date:
02/08/2019
Due date:
% Done:

100%

Estimated time:
Navigateur:
Tous
Votre version de Silverpeas:
6.0
Système d'exploitation:
Votre base de données:
Toutes

Description

L'édition en ligne d'un document se fait par WebDAV et sa mise en œuvre est déléguée à Jackrabbit, l'implémentation de la JCR utilisée par Silverpeas. Pour ce faire, le document est placé directement dans la JCR. Or, pour des raisons de performances d'accès et de manipulations, tout contenu qui excède une certaine taille est stocké sur le système de fichier et non en mémoire ; le contenu est stocké dans une sous-arborescence de dossiers dans ce qui est appelé le datastore et qui correspond au répertoire jcr/repository/datastore, calculé à partir du hash du contenu. Toute entrée (ou nœud) dans le répertoire datastore/ est immuable, signifiant qu'à chaque sauvegarde d'un même document un nouveau nœud est créé. Or, au déverrouillage d'un document, tous les nœuds qui ont été créé dans le datastore lors de l'édition en ligne ne seront pas supprimés ; la taille du répertoire datastore va croître sans cesse.

L'objectif de cette correction est d'appeler le garbage collector de Jackrabbit pour nettoyer le datastore de toute entrée non référencée (autrement dit qui ne soit pas en cours d'édition en ligne).


Related issues

Is duplicate of GED - Bug #10432: La réservation d'un document une fois libéré n'est pas supprimé de la jcr/datastoreClosed01/24/2019

Actions

History

#2

Updated by Yohann Chastagnier 6 months ago

  • Status changed from New to In progress...
#3

Updated by Yohann Chastagnier 6 months ago

  • Status changed from In progress... to Resolved
  • % Done changed from 0 to 100

Un système de purge du répertoire datastore a été mis en place.

Dès lors qu'un utilisateur libère ou met à jour un document office, un traitement de purge des éléments inutiles dans le répertoire datastore est planifié pour s'exécuter après un certain délai.

A chaque libération ou mise à jour d'un tel document :
  • si le délai est inférieur strictement à 1 jour, la planification du traitement de purge est réinitialisée
  • si le délai est supérieur ou égal à 1 jour, deux cas de figures :
    • si aucune purge n'est encore planifiée, elle est alors planifiée pour s'exécuter après le délai en question
    • sinon, aucune modification de planification n'est réalisée
      (une fois la purge effectuée, elle n'est alors plus planifiée)

Le délai est paramétrable à partir du fichier de propriétés $SILVERPEAS/org/silverpeas/util/attachment/Attachment.properties au niveau du paramètre jcr.datastore.garbage.collector.delay. Il est par défaut défini à 7200 minutes, c'est à dire 5 jours.

Si le délai est paramétré à zéro ou avec une valeur négative, le traitement de purge est désactivé.

PR : https://github.com/Silverpeas/Silverpeas-Core/pull/960

#4

Updated by Yohann Chastagnier 6 months ago

  • Assignee set to Yohann Chastagnier
#5

Updated by Miguel Moquillon 6 months ago

  • Status changed from Resolved to Integration in progress...
#6

Updated by Miguel Moquillon 6 months ago

  • Status changed from Integration in progress... to Closed
#7

Updated by Nicolas Eysseric 6 months ago

  • Is duplicate of Bug #10432: La réservation d'un document une fois libéré n'est pas supprimé de la jcr/datastore added

Also available in: Atom PDF