AEM에서 OakState0002 및 분기 재설정 오류로 인해 슬링 작업이 실패합니다

폴더 간에 자산을 이동하는 사용자 지정 Sling 작업이 간헐적으로 실패하고 OakState0002 및 분기 재설정 실패와 같은 JCR 커밋 오류가 발생합니다. 이 작업은 장기 세션 및 대규모 커밋 작업을 사용하여 동시 로드 상태에서 자산을 처리하므로 커밋 실패가 반복됩니다. 이 문제를 해결하려면 세션 처리를 리팩터링하고 다시 시도 논리를 구현합니다.

설명 description

환경

Adobe Experience Manager as a Cloud Service (AEMaaCS)

문제/증상

  • 폴더 간에 자산을 이동하는 동안 사용자 지정 Sling 작업 com.adidasedamprogram.core.job.MoveAssetsFromUploadToIngestionAreaJob이(가) 작성자 인스턴스에서 간헐적으로 실행되지 않습니다.

  • 최대 수집 기간 동안 move_assets_upload_to_ingestion/queue/1..4에서 큐 깊이가 증가된 임시 백로그 양식입니다.

  • 작업 활동은 대량의 자산을 처리하는 동안 특정 시간 범위 동안 급증하여 실행 일관성이 없습니다.

  • 오류 로그에 다음을 포함한 커밋 오류가 표시됩니다.

    code language-none
    java.lang.IllegalStateException: Branch with failed reset
    Caused by: CommitFailedException: OakOak0100: Branch reset failed
    ...
    OakState0002: Conflicting concurrent change
    
  • 이러한 오류는 격리된 상태로 유지되며 플랫폼 전체의 중단을 나타내지는 않지만 에셋 처리에 일시적인 지연이 발생합니다.

근본 원인

근본 원인은 Oak 커밋 충돌에 대한 새로 고침 및 다시 시도 처리 없이 동시 로드 중에 장기 지속 JCR 세션 및 큰 커밋을 사용하는 것입니다. 이로 인해 OakState0002 및 분기 재설정 오류와 같은 일시적인 커밋 오류가 발생합니다.

해결 방법 resolution

문제를 해결하려면 아래 단계를 수행합니다.

  1. 각 에셋 또는 소규모 에셋 배치에 대해 단기 세션을 사용하여 장기 JCR 세션을 피하도록 사용자 정의 슬링 작업 구현을 리팩터링하여 세션 범위가 최소화되고 경합이 줄어들도록 합니다.
  2. 대량 작업을 수행하는 대신 자산당 또는 작은 배치로 변경 사항을 커밋하여 각 커밋의 크기를 줄여 동시 로드 시 커밋 실패를 방지할 수 있습니다.
  3. OakState0002 또는 분기 재설정 오류와 같은 오류를 감지하고 session.refresh(true)을(를) 사용하여 세션을 새로 고친 후 제한된 횟수만큼 커밋을 다시 시도하여 커밋 작업에 대한 제한된 다시 시도 논리를 구현합니다.
  4. 재시도 로직이 엄격한 제한을 적용하여 무한 루프 또는 과도한 재시도를 방지하여 시스템 안정성을 유지하고 불필요한 리소스 사용을 방지하는지 확인하십시오.
  5. 이러한 변경 사항을 적용한 후 작업의 큐 깊이 및 오류 로그를 모니터링하여 커밋 충돌 빈도가 감소하고 작업 처리가 안정되는지 확인하십시오.
  6. 기본 AEM 환경과 컨테이너 상태가 관련이 없으므로 플랫폼이나 인프라 변경이 필요하지 않습니다.

관련 읽기

Assets이 AEMaaCS의 업로드에서 대상 폴더로 이동하지 않음

recommendation-more-help
experience-cloud-kcs-help-kbarticles