Ambiente
Problema/Sintomas
Erro ao obter InputStream
para blobId
Você tem um FileDataStore configurado no sistema Adobe Experience Manager 6.x / Oak 1.x e no error.log você verá "Ocorreu um erro ao obter InputStream para blobId."
1 2 |
10.09.2015 10:38:04.220 *ERROR* pool-9-thread-3 org.apache.sling.commons.scheduler.impl.QuartzScheduler Exception during job execution of org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate@7fe7e8fa : Error occurred while obtaining InputStream for blobId add1dd8fc5093b27b1fae1b753cb48b24ef3231f#101983 java.lang.RuntimeException: Error occurred while obtaining InputStream for blobId add1dd8fc5093b27b1fae1b753cb48b24ef3231f#101983 |
---|
Esse erro significa que você possivelmente está perdendo arquivos do diretório do armazenamento de dados do Adobe Experience Manager. A perda de arquivos do armazenamento de dados pode ser devido a uma falha do Oak Blob Garbage Collection, uma interrupção de espaço em disco, disco ou instabilidade de compartilhamento de rede. Ou pode ser devido a um usuário erroneamente excluindo arquivos do servidor.
Para recuperar os arquivos ausentes, siga as etapas abaixo.
1. Instale o CFP/SP mais recente
Você pode encontrar os hotfixes mais recentes em Compartilhamento de pacotes do Adobe.
2. Executar verificação de consistência do armazenamento de dados
Usando o oak-run jar 1.6.6 e superior, execute o seguinte comando:
java -jar oak-run-*.jar datastorecheck —consistency -ref —id —fds crx-quickstart/install/org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.config —repoHome crx-quickstart/repository —store crx-quickstart/repository/datastore —dump temp —verbose —track
3. Crie uma lista de caminhos dos arquivos ausentes
A próxima etapa na recuperação dos arquivos ausentes é compilar uma lista completa dos caminhos dos arquivos ausentes.
a. No Linux ou Unix: Use este comando para exibir a lista de arquivos ausentes em um arquivo missing_ds_files.txt:
| grep
"blobId"
consistency_check_output.txt |
grep
-Eo
"0-9a-f{40,200}"
|
awk
'{ print substr($1, 0,2) "/" substr($1, 3,2) "/" substr($1, 5,2) "/" $1 }'
|
sort
-u missing_ds_files.txt
|
| — |
| grep
"Error occurred while obtaining InputStream for blobId"
error.log* |
grep
-Eo
"0-9a-f{40,200}"
|
awk
'{ print substr($1, 0,2) "/" substr($1, 3,2) "/" substr($1, 5,2) "/" $1 }'
|
sort
-u missing_ds_files.txt
|
| — |
12/92/04/129204a6dd0ce2cd5ca19c721b6f52ee2b3630e2 9f/d8/38/9fd8386d20cf55e7e0024e18d0c7d4e8400454ee 7a/13/15/7a1315788f45dafd6630454f04183601682a9f80 28/37/d2/2837d24aed3ff223cd40e90222226c4ef2e2a0c6 |
---|
Os caminhos de arquivo do DataStore são construídos a partir do nome do registro neste formato:
{primeiro dois caracteres de id de registro}/{segundo dois caracteres de id de registro}/{terceiro dois caracteres de id de registro}/{id de registro}
Por exemplo, neste erro:
java.lang.RuntimeException: Error occurred while obtaining InputStream for blobId add1dd8fc5093b27b1fae1b753cb48b24ef3231f#101983 |
---|
Se você não conseguir localizar alguns dos arquivos em outras instâncias, pesquise seus backups e os restaure de lá, se possível.
No Linux, você poderia fazer logon em cada uma das instâncias do Adobe Experience Manager em funcionamento e usar um comando como o rsync para copiar qualquer um dos arquivos ausentes existentes neles. Por exemplo, executando-o a partir do diretório do armazenamento de dados no servidor que tem os arquivos ausentes:
rsync -avR --files-from=missing_ds_files.txt . user@ hostname -of-server-missing-files: /path/to/crx-quickstart/repository/repository/datastore/ |
---|
Revise cada um dos caminhos de nó listados que fazem referência a arquivos ausentes do armazenamento de dados. Revise quaisquer ativos ou arquivos do DAM ausentes carregados nas páginas com seu usuário. Faça o upload novamente dos que estiverem faltando. Qualquer um que não precise pode ser excluído com segurança pela interface do usuário do Adobe Experience Manager. Se algo estiver faltando em /var/audit ou /var/eventing pode ser excluído com segurança. Para todos os arquivos sobre os quais você não tem certeza, acesse here e entre em contato com a equipe de suporte AEM para obter assistência.
6. Reindexe todos os índices assíncronos do Oak
Como os arquivos de índice são armazenados no repositório Oak, também pode ser possível que alguns arquivos estejam ausentes dos índices baseados em /oak:index lucene.
Esses arquivos ausentes não seriam relatados na verificação de consistência /system/console/repositorycheck, pois estão ocultos das travessias do repositório. Infelizmente, esses arquivos não corresponderiam em diferentes instâncias de AEM.
Para corrigir essas inconsistências, reindexe os índices assíncronos do Oak afetados.
AVISO: Essa operação é extremamente cara e exigirá tempo de inatividade estendido, de 10 minutos a vários dias, para ser concluída, dependendo do volume de conteúdo no sistema.
Para reindexar os índices assíncronos:
Faça o download do oak-run 1.0.x correspondente à versão que você instalou no seu ambiente Oak: https://repo1.maven.org/maven2/org/apache/jackrabbit/oak-run/
Faça upload do oak-run para o servidor Adobe Experience Manager.
Pare todas as instâncias do Adobe Experience Manager.
Execute o comando abaixo correspondente ao armazenamento Oak da instância do Adobe Experience Manager:
comando TarMK:
java -Xmx4096m -jar /apps/staging/oak-run-*-*.jar checkpoints crx-quickstart/repository/segmentstore rm-all |
---|
1 | java -Xmx4096m -jar oak-run-*-*.jar checkpoints mongodb://localhost/aem-author rm-all |
---|
Você deve ver mensagens de log como estas:
23.06.2015 14:26:23.070 *INFO* FelixStartLevel org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing will be performed for following indexes: /oak:index/cqAcUUID, /oak:index/nodetype, /oak:index/deviceIdentificationMode, /oak:index/campaignpath, /oak:index/active, /oak:index/jcrFrozenMixinTypes 23.06.2015 14:26:23.517 *INFO* FelixStartLevel org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing Traversed #10000 /jcr:system/jcr:versionStorage/c8/5f ... 23.06.2015 14:28:51.999 *INFO* pool-8-thread-1 org.apache.jackrabbit.oak.plugins.index.IndexUpdate Indexing report - /oak:index/counter*(708) - /oak:index/authorizables*(159) - /oak:index/cqPageLucene*(1913) - /oak:index/ntBaseLucene*(444) - /oak:index/cqTagLucene*(512) - /oak:index/workflowDataLucene*(116) ... 23.06.2015 14:28:52.009 *INFO* pool-8-thread-1 org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate Reindexing (async) completed for indexes: /oak:index/counter*(708), /oak:index/authorizables*(159), /oak:index/cqPageLucene*(1913), /oak:index/ntBaseLucene*(444), /oak:index/cqTagLucene*(512), /oak:index/workflowDataLucene*(116) in 30.36 s |
---|
23.06.2015 14:26:23.070 *INFO* FelixStartLevel org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing will be performed for following indexes: /oak:index/cqAcUUID, /oak:index/nodetype, /oak:index/deviceIdentificationMode, /oak:index/campaignpath, /oak:index/active, /oak:index/jcrFrozenMixinTypes |
---|