Problème

Après avoir exécuté le nettoyage de révision hors ligne (également appelé compactage de tar hors ligne) sur AEM 6.3, l'exception suivante peut être trouvée dans le error.log :

05.10.2017 16:45:20.437 *ERROR* [FelixStartLevel] org.apache.jackrabbit.oak-segment-tar [org.apache.jackrabbit.oak.segment.SegmentNodeStoreService(208)] The activate method has thrown an exception (java.lang.IllegalStateException: This builder does not exist: null)java.lang.IllegalStateException: This builder does not exist: null

L’occurrence ne démarre pas à ce stade et l’exécution d’un référentiel (« vérification du oak-run ») ne peut pas détecter cette corruption. La réparation n’est pas possible car les données ont été supprimées par le nettoyage de révision hors ligne ayant échoué.

Si vous avez « journalisation activée » pendant le nettoyage de modification hors ligne, recherchez le message :

10:43:19.886 WARN [TarMK disk space check [/crx-quickstart/repository/segmentstore]] FileStore.java:701 Available disk space (14.6 GB) is too low, current repository size is approx. 59.4 GB

Si ce message est suivi par ce message :

10:43:19.889 INFO [main] LoggingGCMonitor.java:45 TarMK GC #0: compaction succeeded in 2.034 min (122066 ms), after 0 cycles.

cela signifie que l’erreur s’est produite, le référentiel a été corrompu et doit être restauré à partir d’une sauvegarde.

Si le message affiche :

11:01:27.312 WARN  [main] LoggingGCMonitor.java:50          TarMK GC #0: compaction cancelled: Not enough disk space.

cela signifie que l’erreur n’a pas eu lieu et qu’il n’existe aucun référentiel. (le nettoyage de la révision hors ligne n'a pas été terminé, car l'espace disque est insuffisant).

Environnement

AEM 6.3 avec Oak 1.6 (et la version oak-run correspondant).

Versions concernées

Oak 1.6.0, Oak 1.6.1, Oak 1.6.2, Oak 1.6.3, Oak 1.6.4, Oak 1.6.5, Oak 1.6.6, Oak 1.6.7

Non concernées

Oak 1.0.x, Oak 1.2.x, Oak 1.4.x, Oak 1.7.x, Oak 1.8.x and supérieur. Le nettoyage de révision en ligne n’est pas affecté.

Cause

Le nettoyage de la révision hors ligne surveille l’espace disque disponible pendant son exécution.  Il s'annule lui-même lorsque l’espace disque disponible est insuffisant.  Une condition d’erreur n’est pas gérée correctement par ce processus, ce qui entraîne une corruption de référentiel irrémédiable et potentiellement significative.

Ceci est suivi dans OAK-7050:

Le nettoyage de révision hors ligne peut corrompre le référentiel dans certains cas : lorsque le nettoyage de révision hors ligne est annulé par CancelCompactionSupplier, la valeur de retour correspondante n'est pas correctement transmise à la chaîne d’appel, ce qui entraîne un état de compactage incomplet état (au lieu d'être jeté).

L'annulation est déclenchée en mode silencieux lorsque l'espace disque disponible est inférieur à 25% de la taille réelle du référentiel.

Résolution

Pour remédier à ce problème, assurez-vous d'avoir suffisamment d’espace disque disponible à tout moment lors de l’exécution du nettoyage de modification hors connexion avec une version de Oak affectée par ce problème.

Avant de commencer la décompression, l’espace disponible doit être suffisant pour stocker la taille du référentiel en cours.  A tout moment, lors de l'exécution du compactage, l'espace disque restant ne doit pas être inférieur à 25% de la taille actuelle du référentiel.

Dans la documentation officielle, vous trouverez ces instructions :


Quelle est la configuration minimale requise pour l'espace disque et la mémoire de tas lors de l'exécution du nettoyage en ligne de révision ?

L’espace disque est surveillé en permanence pendant le nettoyage des révisions en ligne. Si l’espace disque disponible est inférieur à une valeur critique, le processus est annulé. La valeur critique correspond à 25% de l'empreinte disque actuelle du référentiel et n'est pas configurable.

Il est recommandé de dimensionner le disque au moins deux ou trois fois plus grand que la taille du référentiel, y compris la croissance estimée.


OAK-7050 est corrigé dans la version 1.6.8 de Oak, dont la publication est prévue pour le 8 janvier 2018: NPR-20768.  Cette version de Oak-run doit être utilisée sur AEM 6.3 pour exécuter le nettoyage des révisions hors ligne.

Si vous avez besoin d'exécuter un nettoyage de révision hors ligne avant la sortie de Oak 1.6.8 et que vous ne pouvez pas garantir un espace disque 2 fois supérieur à la taille du référentiel, une version plus ancienne peut être téléchargée depuis ici.

Il n’est pas nécessaire de mettre à jour tous les éléments sur AEM, mais seul l’outil oak-run externe est affecté.

Remarque :

Pour une recommandation significative, utilisez toujours la version de oak-run correspondant à la version de Oak dans l’occurrence AEM correspondante.

Pour résoudre ce problème, nous vous recommandons de :

  1. Mettez à niveau toutes les instances vers Oak 1.6.8 une fois que le HF correspondant est sorti et à partir de là, continuez à utiliser la version correspondante de Oak-Run.
  2. Jusqu'à ce que la mise à niveau vers Oak 1.6.8 soit terminée, utilisez oak-run 1.6.8 (ou oak-run-1.6.7-R1817912.jar à partir du lien ci-dessus jusqu'à la sortie de 1.6.8) pour le compactage hors ligne et utilisez la version correspondante de oak-run pour toutes les autres commandes.

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne