En el clúster de AEM de múltiples nodos con S3DataStore, si carga imágenes o vídeos de gran tamaño (más de 100 MB) en la interfaz de usuario de Assets a través de un nodo topológico secundario, se registrarán errores similares al que se muestra a continuación.
17.04.2017 23:53:27.106 *ERROR* [JobHandler: /etc/workflow/instances/server0/2017-04-17/update_asset_5:/content/dam/test.jpg/jcr:content/renditions/original] com.day.cq.dam.core.impl.cache.CQBufferedImageCache Error while loading image /content/dam/rrd/dsg/migration-test/to-rrd/aem-tester/Perf1492487597162_Performance_100MB_JPG.jpg/jcr:content/renditions/original java.lang.RuntimeException: Error occurred while obtaining InputStream for blobId [c260220808fc2ee8550a97daea0444123b02f90b#103376192] at org.apache.jackrabbit.oak.plugins.blob.BlobStoreBlob.getNewStream(BlobStoreBlob.java:49) at org.apache.jackrabbit.oak.plugins.value.BinaryImpl.getStream(BinaryImpl.java:53) at org.apache.sling.jcr.resource.internal.helper.LazyInputStream.getStream(LazyInputStream.java:106) at org.apache.sling.jcr.resource.internal.helper.LazyInputStream.read(LazyInputStream.java:65) at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1792) at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1769) at org.apache.commons.io.IOUtils.copy(IOUtils.java:1744) at com.day.cq.dam.commons.handler.StandardImageHandler.getImage(StandardImageHandler.java:245) at com.day.cq.dam.core.impl.handler.JpegHandler.getImage(JpegHandler.java:79) at com.day.cq.dam.core.impl.cache.CQBufferedImageCache.getImage(CQBufferedImageCache.java:116) at com.day.cq.dam.core.impl.gfx.CommonsGfxRenderer.createImageLayer(CommonsGfxRenderer.java:488) at com.day.cq.dam.core.impl.gfx.CommonsGfxRenderer.createLayer(CommonsGfxRenderer.java:163) at com.day.cq.dam.core.impl.gfx.CommonsGfxRenderer.render(CommonsGfxRenderer.java:116) at com.day.cq.dam.core.impl.RenditionMakerImpl$PlanBasedTemplate.apply(RenditionMakerImpl.java:132) at com.day.cq.dam.core.impl.RenditionMakerImpl.generateRenditions(RenditionMakerImpl.java:216) at com.day.cq.dam.core.process.CreateWebEnabledImageProcess.createWebEnabledImage(CreateWebEnabledImageProcess.java:165) at com.day.cq.dam.core.process.ThumbnailProcess.execute(ThumbnailProcess.java:82) at com.day.cq.workflow.compatibility.CQWorkflowProcessRunner.execute(CQWorkflowProcessRunner.java:93) ... Caused by: java.io.IOException: org.apache.jackrabbit.core.data.DataStoreException: Could not length of dataIdentifier c260220808fc2ee8550a97daea0444123b02f90b at org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore.getStream(DataStoreBlobStore.java:539) at org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore.getInputStream(DataStoreBlobStore.java:322) at org.apache.jackrabbit.oak.plugins.blob.BlobStoreBlob.getNewStream(BlobStoreBlob.java:47) ... 26 common frames omitted Caused by: org.apache.jackrabbit.core.data.DataStoreException: Could not length of dataIdentifier c260220808fc2ee8550a97daea0444123b02f90b at org.apache.jackrabbit.oak.blob.cloud.aws.s3.S3Backend.getLength(S3Backend.java:485) at org.apache.jackrabbit.core.data.CachingDataStore.getLength(CachingDataStore.java:671) at org.apache.jackrabbit.core.data.CachingDataStore.getRecord(CachingDataStore.java:469) at org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore.getDataRecord(DataStoreBlobStore.java:548) at org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore.getStream(DataStoreBlobStore.java:533) ... 28 common frames omitted Caused by: com.amazonaws.services.s3.model.AmazonS3Exception: Not Found (Service: Amazon S3; Status Code: 404; Error Code: 404 Not Found; Request ID: 09ED6CDC6129E1DA) at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1389) at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:902) at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:607) at com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:376) at com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:338) at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:287) at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3826) at com.amazonaws.services.s3.AmazonS3Client.getObjectMetadata(AmazonS3Client.java:1015) at com.amazonaws.services.s3.AmazonS3Client.getObjectMetadata(AmazonS3Client.java:991) at org.apache.jackrabbit.oak.blob.cloud.aws.s3.S3Backend.getLength(S3Backend.java:478) ... 32 common frames omitted
La causa de este problema se debe a que la carga asíncrona del binario en S3 tarda más tiempo que el procesamiento de trabajos en el clúster. El nodo líder procesa las tareas del flujo de trabajo de DAM Update Asset, pero la tarea se procesa antes de que el archivo se cargue en S3. Para obtener más detalles, consulte OAK-4903.
Este problema se corrige en AEM 6.3.
A. Desactivación de las cargas de asíncronas de S3
Como solución alternativa en AEM 6.1 y 6.2, haga lo siguiente:
Nota:
El establecimiento de asyncUploadLimit en 0 tendrá un impacto en el rendimiento de las cargas de archivos de los recursos. Después de configurar esto, tendrá que realizar pruebas de carga para asegurarse de que el entorno sigue cumpliendo con las necesidades de rendimiento.
B. Habilitación de la distribución de trabajos
Otro enfoque para resolver el problema sin que se produzca un impacto en el rendimiento consiste en habilitar la distribución del trabajo de Sling. A continuación, puede procesar los trabajos de
Sling directamente en los nodos secundarios del clúster, además de en el primario.
Para ello, siga estos pasos: