Fila de Distribuição bloqueada com AccessDeniedException
Ao tentar replicar o conteúdo da página, XF ou outros recursos usando o Quick Publish, Gerenciar publicação ou Replicar, a Fila de distribuição no Autor é bloqueada. Você pode verificar isso verificando a Fila de Distribuição publicar da Interface de Distribuição (AEM > Ferramentas > Implantação > Distribuição). Siga as etapas fornecidas neste documento para resolver o problema.
Descrição description
Ambiente
- Experience Manager
- Experience Manager as a cloud service
Problemas/Sintomas
Ao tentar replicar algum conteúdo da Página (ou XF e outros tipos de recursos) usando o "Quick Publish", "Manage Publication" ou "Replicate", a Fila de Distribuição no Autor é Bloqueada.
Isso pode ser observado verificando a fila de publicação distribuição da interface de distribuição (AEM - Ferramentas - Implantação - Distribuição):
Ao selecionar a fila Golden Publisher (entrada em negrito da lista), mais detalhes são fornecidos e, em particular, o PATH envolvido (pode haver vários elementos aqui):
Ao examinar a guia Logs, o seguinte erro será exibido:
2023/03/08 12:11:26:238 - INFO - Solicitação aceita com o pacote de distribuição PackageMessage(pubSlingId=a113 3c97-6809-411e-a435-4eea0ecbe889, reqType=ADD, pkgId=dstrpck-1678277486031-63159f4b-c577-4079-8741-d416605 97d20, pkgType=journal_filevault, pkgLength=6330, pubAgentName=publish, userId=replication-service, paths=[ /content/wknd/fr] , deepPaths=[ ] ) em offset=158705
2023/03/08 12:11:27:459 - AVISO - Mensagem: Falha na tentativa (0/infinito) de importar o pacote de distribuição PackageMessage(pubSlingId=a1133c97-6809-411e-a435-4eea0ecbe889, reqType=ADD, pkgId=dstrpck 1678277486031-63159f4b-c577-4079-8741-d41660597d20, pkgType=journal_filevault, pkgLength=6330, pubAgentName=publish, userId=replication-service, paths=[ /content/content knd/fr] , deepPaths=[ ] ) no offset=158705 devido a "javax.jcr.AccessDeniedException: OakAccess0000: Acesso negado", o importador tentará novamente mais tarde,
Stacktrace: org.apache.sling.distribution.common.DistributionException: javax.jcr.AccessDeniedException: OakAccess0000: acesso negado[ …]
É necessário Limpar a Fila (ou remover esse item) para desbloquear a fila.
Resolução resolution
Apesar do erro ser javax.jcr.AccessDeniedException, possivelmente não há relação com a ACL/permissões para os usuários do serviço de distribuição, embora isso deva ser considerado se o cenário a seguir não se aplicar ao seu caso.
Diagnóstico
O erro acima pode ocorrer em algumas situações, quando o conteúdo replicado tem uma configuração específica relacionada à propriedade especial jcr:lockIsDeep.
Para confirmar o diagnóstico, você terá que inspecionar cada um dos caminhos mencionados com qualquer uma das seguintes ferramentas que você pode acessar/é aplicável:
- CRX/DE para instâncias DEV
- o Navegador do Repositório
- criar um pacote de conteúdo no Gerenciador de pacotes (essa opção também faz parte da resolução)
Em seguida, é necessário verificar o nó jcr:content para cada caminho encontrado na interface do usuário da fila de distribuição e verificar se:
- Ele tem uma propriedade
jcr:lockIsDeep="(Booleano)true" - Ele não tem uma propriedade
jcr:lockOwner="xxx" - ( ele não tem um valor
mix:lockablenojcr:mixinTypes)
Se esse for o caso, o problema será confirmado, já que a propriedade jcr:lockIsDeep não deve estar presente sozinha. Esta propriedade deve ser sempre definida juntamente com jcr:lockOwner quando Bloquear uma página.
Não é possível definir apenas a propriedade jcr:lockIsDeep, mesmo usando a API JCR, portanto, a causa raiz que explica essa situação é principalmente por ter instalado um pacote de conteúdo corrompido com essa única propriedade.
Resolução
Para corrigir o conteúdo, a única solução é instalar um pacote no Autor que tenha as propriedades corretas definidas no nó correspondente.
É possível criar esse pacote a partir de outra instância com o conteúdo correspondente ou, se você tiver apenas esse conteúdo na instância afetada, siga estas instruções:
- Gerar um pacote na instância corrompida para a página com falha
- Baixar o pacote
- Extraia o
.content.xmlpara a página/jcr:content - Remova manualmente a linha com o jcr:lockIsDeep
- Atualize seu pacote com o arquivo novo/corrigido .content.xml
- Recarregue e instale o pacote modificado
Verifique novamente as propriedades da página e teste com êxito a replicação/distribuição.