Mixin 충돌(및 ClassicUI 사용)로 인해 롤아웃 실패

콘텐츠 업데이트 작업 구성과 mixin(ClassicUI 사용) 충돌 때문에 롤아웃 실패가 발생하는 문제를 해결하는 방법에 대해 알아봅니다.

설명 description

페이지의 썸네일 노드에서 일부 jcr:mixinTypes 충돌이 발생하여 페이지 롤아웃이 실패했습니다.

페이지가 ClassicUI를 사용하여 썸네일 로 구성되었다가 처음 롤아웃되면 충돌이 발생합니다(첫 번째 롤아웃이 작동함).

이 시점에서 페이지의 썸네일 구조 사이에 있는 mixin이 충돌하여 마스터 페이지 롤아웃을 수행할 수 없습니다.

  • dam:Thumbnails
  • cq:LiveRelationship

로그에 주어진 오류는 다음과 같습니다.

27.07.2022 15:48:07.091 *ERROR* [ 0:0:0:0:0:0:0:1 [ 1658929687039]  POST /bin/wcmcommand HTTP/1.1]  com.day.cq.wcm.msm.impl.commands.RolloutCommand Error during roll-out.
com.day.cq.wcm.api.WCMException: com.day.cq.wcm.api.WCMException: com.day.cq.wcm.api.WCMException: com.day.cq.wcm.api.WCMException: com.day.cq.wcm.api.WCMException: com.day.cq.wcm.api.WCMException: javax.jcr.nodetype.ConstraintViolationException: No matching node definition found for dam:thumbnails
    at com.day.cq.wcm.msm.impl.RolloutManagerImpl.rolloutResource(RolloutManagerImpl.java:824) [ com.day.cq.wcm.cq-msm-core:5.11.84]
    at com.day.cq.wcm.msm.impl.RolloutManagerImpl.rolloutPage(RolloutManagerImpl.java:693) [ com.day.cq.wcm.cq-msm-core:5.11.84]
    at com.day.cq.wcm.msm.impl.RolloutManagerImpl.rolloutPageRelations(RolloutManagerImpl.java:624) [ com.day.cq.wcm.cq-msm-core:5.11.84]
    at com.day.cq.wcm.msm.impl.RolloutManagerImpl.rollout(RolloutManagerImpl.java:515) [ com.day.cq.wcm.cq-msm-core:5.11.84]
    at com.day.cq.wcm.msm.impl.commands.RolloutCommand.performCommand(RolloutCommand.java:153) [ com.day.cq.wcm.cq-msm-core:5.11.84]
    at com.day.cq.wcm.core.impl.commands.WCMCommandService$CommandHolder.performCommand(WCMCommandService.java:178) [ com.day.cq.wcm.cq-wcm-core:5.11.312]
    at com.day.cq.wcm.core.impl.commands.WCMCommandServlet.performCommand(WCMCommandServlet.java:120) [ com.day.cq.wcm.cq-wcm-core:5.11.312]
    at com.day.cq.commons.servlets.AbstractCommandServlet.doPost(AbstractCommandServlet.java:49) [ com.day.cq.cq-commons:5.11.18]
    at org.apache.sling.api.servlets.SlingAllMethodsServlet.mayService(SlingAllMethodsServlet.java:146) [ org.apache.sling.api:2.20.0]
    at org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:342) [ org.apache.sling.api:2.20.0]
    [ ..]
Caused by: com.day.cq.wcm.api.WCMException: com.day.cq.wcm.api.WCMException: com.day.cq.wcm.api.WCMException: com.day.cq.wcm.api.WCMException: com.day.cq.wcm.api.WCMException: javax.jcr.nodetype.ConstraintViolationException: No matching node definition found for dam:thumbnails
    at com.day.cq.wcm.msm.impl.RolloutManagerImpl.rolloutResource(RolloutManagerImpl.java:824) [ com.day.cq.wcm.cq-msm-core:5.11.84]
    at com.day.cq.wcm.msm.impl.RolloutManagerImpl.rolloutResource(RolloutManagerImpl.java:811) [ com.day.cq.wcm.cq-msm-core:5.11.84]
    ... 135 common frames omitted
Caused by: com.day.cq.wcm.api.WCMException: com.day.cq.wcm.api.WCMException: com.day.cq.wcm.api.WCMException: com.day.cq.wcm.api.WCMException: javax.jcr.nodetype.ConstraintViolationException: No matching node definition found for dam:thumbnails
    at com.day.cq.wcm.msm.impl.RolloutManagerImpl.rolloutResource(RolloutManagerImpl.java:824) [ com.day.cq.wcm.cq-msm-core:5.11.84]
    at com.day.cq.wcm.msm.impl.RolloutManagerImpl.rolloutResource(RolloutManagerImpl.java:811) [ com.day.cq.wcm.cq-msm-core:5.11.84]
    ... 136 common frames omitted
Caused by: com.day.cq.wcm.api.WCMException: com.day.cq.wcm.api.WCMException: com.day.cq.wcm.api.WCMException: javax.jcr.nodetype.ConstraintViolationException: No matching node definition found for dam:thumbnails
    at com.day.cq.wcm.msm.impl.RolloutManagerImpl.rolloutResource(RolloutManagerImpl.java:824) [ com.day.cq.wcm.cq-msm-core:5.11.84]
    at com.day.cq.wcm.msm.impl.RolloutManagerImpl.rolloutResource(RolloutManagerImpl.java:811) [ com.day.cq.wcm.cq-msm-core:5.11.84]
    ... 137 common frames omitted
Caused by: com.day.cq.wcm.api.WCMException: com.day.cq.wcm.api.WCMException: javax.jcr.nodetype.ConstraintViolationException: No matching node definition found for dam:thumbnails
    at com.day.cq.wcm.msm.impl.RolloutManagerImpl.rolloutResource(RolloutManagerImpl.java:824) [ com.day.cq.wcm.cq-msm-core:5.11.84]
    at com.day.cq.wcm.msm.impl.RolloutManagerImpl.rolloutResource(RolloutManagerImpl.java:811) [ com.day.cq.wcm.cq-msm-core:5.11.84]
    ... 138 common frames omitted
Caused by: com.day.cq.wcm.api.WCMException: javax.jcr.nodetype.ConstraintViolationException: No matching node definition found for dam:thumbnails
    at com.day.cq.wcm.msm.commons.BaseAction.execute(BaseAction.java:154) [ com.day.cq.wcm.cq-msm-commons:1.1.2]
    at com.day.cq.wcm.msm.impl.RolloutManagerImpl.rolloutResource(RolloutManagerImpl.java:790) [ com.day.cq.wcm.cq-msm-core:5.11.84]
    ... 139 common frames omitted
Caused by: javax.jcr.nodetype.ConstraintViolationException: No matching node definition found for dam:thumbnails
    at org.apache.jackrabbit.oak.plugins.nodetype.EffectiveNodeTypeImpl.getNodeDefinition(EffectiveNodeTypeImpl.java:454) [ org.apache.jackrabbit.oak-core:1.8.22]
    at org.apache.jackrabbit.oak.plugins.nodetype.ReadOnlyNodeTypeManager.getDefinition(ReadOnlyNodeTypeManager.java:396) [ org.apache.jackrabbit.oak-core:1.8.22]
    at org.apache.jackrabbit.oak.jcr.session.NodeImpl$29.perform(NodeImpl.java:1031) [ org.apache.jackrabbit.oak-jcr:1.8.22]
    at org.apache.jackrabbit.oak.jcr.session.NodeImpl$29.perform(NodeImpl.java:1023) [ org.apache.jackrabbit.oak-jcr:1.8.22]
    at org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) [ org.apache.jackrabbit.oak-jcr:1.8.22]
    at org.apache.jackrabbit.oak.jcr.session.ItemImpl.perform(ItemImpl.java:112) [ org.apache.jackrabbit.oak-jcr:1.8.22]
    at org.apache.jackrabbit.oak.jcr.session.NodeImpl.getDefinition(NodeImpl.java:1023) [ org.apache.jackrabbit.oak-jcr:1.8.22]
    at com.day.cq.wcm.msm.commons.ItemFilterImpl.excludes(ItemFilterImpl.java:91) [ com.day.cq.wcm.cq-msm-commons:1.1.2]
    at com.day.cq.wcm.msm.impl.actions.ContentCopyActionFactory$ContentCopyAction.applyFilters(ContentCopyActionFactory.java:293) [ com.day.cq.wcm.cq-msm-core:5.11.84]
    at com.day.cq.wcm.msm.impl.actions.ContentCopyActionFactory$ContentCopyAction.createCopy(ContentCopyActionFactory.java:245) [ com.day.cq.wcm.cq-msm-core:5.11.84]
    at com.day.cq.wcm.msm.impl.actions.ContentCopyActionFactory$ContentCopyAction.doExecute(ContentCopyActionFactory.java:208) [ com.day.cq.wcm.cq-msm-core:5.11.84]
    at com.day.cq.wcm.msm.commons.BaseAction.execute(BaseAction.java:134) [ com.day.cq.wcm.cq-msm-commons:1.1.2]
    ... 140 common frames omitted

재현 단계:

  1. vanilla AEM 6.5.13.0 시작
  2. /siteadmin(으)로 이동(ClassicUI 사용)
  3. /content/we-retail/language-master/en/women ​의 페이지 속성을 엽니다.
  4. tab 이미지에서 이미지를 썸네일로 설정
  5. 페이지 롤아웃
  6. 이제 사이트 UI(으)로 이동
  7. /content/we-retail/us/en/women ​에 대한 페이지 속성을 다시 엽니다.
  8. 썸네일 탭에서 미리 보기 생성 ​을 클릭하고 변경 내용을 저장합니다.
  9. 이제 /siteadmin에서 페이지를 다시 롤아웃합니다.

해결 방법 resolution

이 문제는 AEM에서 라이브 카피 페이지(https://experienceleague.adobe.com/content/we-retail/us/en/women/jcr:content/image/file/jcr:content?lang=ko)의 jcr:content 아래에 "dam:thumbnails" 노드를 만들 수 없기 때문에 롤아웃 중에 발생하며, 그 이유는 롤아웃 동안 mixinType "dam:Thumbnails"가 라이브 카피 페이지 노드 "/content/we-retail/us/en/women/jcr:content/file/jcr:content"에 적용되지 않고 "dam:Thumbnails" 폴더는 "dam:Thumbnails" nodeType 아래에서만 만들 수 있기 때문입니다.

MSM 기본 동작은 [ 0] 롤아웃 중에 소스의 노드에 추가된 새 mixin을 무시하는 것이므로 "/content/we-retail/us/en/women/jcr:content/image/file/jcr:content"에 추가되지 않습니다.

이 문제를 해결하기 위해 콘텐츠 업데이트 작업 구성을 통해 이 동작을 변경할 수 있습니다.
기본값은 아래 스크린샷에서와 같이 모든 mixin 유형이 무시됩니다.

다음을 사용하도록 업데이트해야 합니다.

(?!.*dam:Thumbnails).*

아래 스크린샷에 표시된 대로:

이렇게 하면 문제가 해결됩니다.

[ 0] https://experienceleague.adobe.com/docs/experience-manager-64/administering/introduction/msm-sync.html?lang=ko#excluding-properties-and-node-types-from-synchronization

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f