La limpieza de revisiones sin conexión rompe el repositorio en caso de que haya poco espacio de disco disponible

Problema

Después de ejecutar la limpieza de revisión sin conexión (también conocida como compactación del tar sin conexión) en AEM 6.3, la siguiente excepción se puede encontrar en el archivo error.log:

05.10.2017 16:45:20.437 *ERROR*[FelixStartLevel] org.apache.jackrabbit.oak-segment-tar[org.apache.jackrabbit.oak.segment.segment.SegmentNodeStoreService(208)] El método de activación ha lanzado una excepción (java.lang.IllegalStateException: Esta creación no existe: null)java.lang.IllegalStateException: Esta creación no existe: null

La instancia no se inicia en este punto, y realizar una comprobación del repositorio (herramienta"comprobación de ejecución de oak") no puede detectar esta corrupción. La reparación no es posible, ya que los datos se eliminaron al fallar la limpieza de revisión sin conexión.

Si tenía "registro habilitado" durante la limpieza de revisión sin conexión, tenga cuidado con el mensaje:

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 a este mensaje le sigue el mensaje:

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

esto significa que el error ocurrió, el repositorio se corrompió y necesita ser restaurado desde una copia de seguridad.

Si el mensaje en su lugar dice:

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

esto significa que el error no ocurrió y que no hay corrupción en el repositorio. (La limpieza de la revisión sin conexión no se completó con éxito ya que no había suficiente espacio en disco).

Entorno

AEM 6.3 con Oak 1.6 (y su correspondiente versión en Oak).

Versiones relacionadas

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

No afectado

Oak 1.0.x, Oak 1.2.x, Oak 1.4.x, Oak 1.7.x, Oak 1.8.x y superior. La limpieza de la revisión en línea no se ve afectada.

Causa

La limpieza de revisiones sin conexión hace un seguimiento del espacio en disco disponible durante su ejecución.  Se cancela cuando no hay suficiente espacio en disco disponible.  Una condición de error no es manejada correctamente por este proceso causando una corrupción irrecuperable y potencialmente severa del repositorio.

Esto se sigue en OAK-7050:

La Limpieza de Revisión sin conexión puede corromper el repositorio en algunos casos: Cuando el CancelCompactionSupplier cancela la limpieza de revisión sin conexión, el valor de retorno correspondiente no se transfiere correctamente a la cadena de llamada, lo que provoca que se establezca un estado incompleto de la cabeza compactada como estado de la cabeza compactada (en lugar de ser desechada)

La cancelación se activa silenciosamente cuando el espacio de disco disponible es inferior al 25% del tamaño real del repositorio.

Resolución

Como mitigación, asegúrese de que haya suficiente espacio en disco disponible en todo momento cuando ejecute la Limpieza de Revisión sin conexión con una versión de Oak que se vea afectada por este problema.

Antes de iniciar la compactación, debe haber suficiente espacio libre para almacenar el doble del tamaño actual del repositorio.  En todo momento, cuando se ejecuta la compactación, el espacio de disco restante no debe caer por debajo del 25% del tamaño actual del repositorio.

En la documentación oficial, usted puede encontrar estas directrices:


¿Cuáles son los requisitos mínimos de espacio en disco y memoria acumulada cuando se ejecuta limpieza de revisión en línea?

El espacio en disco se monitorea continuamente durante la limpieza de revisión en línea. Si el espacio de disco disponible cae por debajo de un valor crítico, el proceso se cancelará. El valor crítico es el 25% de la marca de disco actual del repositorio y no es configurable.

Se recomienda dimensionar el disco al menos dos o tres veces más grande que el tamaño del repositorio, incluyendo el crecimiento estimado.


OAK-7050 está fijado en la versión oak-run 1.6.8, cuya publicación está prevista para el 8 de Enero del 2018.  Esta versión de oak-run debe ser usada en AEM 6.3 para ejecutar la limpieza de revisión sin conexión.

Si tiene la necesidad de ejecutar limpieza de revisión sin conexión antes del lanzamiento de Oak 1.6.8 y no puede garantizar tener disponible un espacio en disco 2 veces mayor que el tamaño del repositorio, puede descargar una versión anterior desde aquí.

No hay necesidad de actualizar nada en el lado AEM, solo afecta la herramienta externa oak-run.

Nota:

Como una fuerte recomendación, utilice siempre la versión de oak-run que coincida con la versión Oak en la instancia AEM respectiva.

Para tratar este tema, le recomendamos que lo haga:

  1. Actualice todas las instancias a Oak 1.6.8 una vez que se haya liberado el HF correspondiente y desde allí siga usando la versión correspondiente de oak-run.
  2. Hasta que se complete la actualización a Oak 1.6.8, utilice oak-run 1.6.8 (o oak-run-1.6.7-R1817912.jar desde el enlace anterior hasta que se libere 1.6.8) para la compactación fuera de línea y utilice la versión correspondiente de oak-run para todos los demás comandos.

 Adobe

Obtén ayuda de forma más rápida y sencilla

¿Nuevo usuario?