Sling作業因OakState0002和AEM中的分支重設錯誤而失敗

在資料夾之間移動資產的自訂Sling作業間歇性地失敗,並出現JCR認可錯誤,例如​ OakState0002 ​和分支重設失敗。 此作業會使用長效工作階段和大型認可作業,在同時載入下處理資產,導致重複認可失敗。 若要解決此問題,請重構工作階段處理並實作重試邏輯。

說明 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
    
  • 這些錯誤會維持隔離狀態,並不表示整個平台發生中斷,但會導致資產處理暫時延遲。

根本原因

根本原因是並行載入下使用長期JCR工作階段和大型認可,而沒有針對Oak認可衝突進行重新整理和重試處理。 這會導致暫時性認可失敗,例如​ OakState0002 ​和分支重設錯誤。

解決方法 resolution

若要解決問題,請遵循下列步驟:

  1. 重構自訂Sling Job實作,對每個資產或一小批資產使用短期工作階段,以避免長期JCR工作階段,確保工作階段範圍保持最小並減少爭用。
  2. 透過提交每個資產或小批次的變更來減少每個提交的大小,而不是執行大型大量作業,這有助於防止同時載入時發生提交失敗。
  3. 透過偵測失敗(例如​ OakState0002 ​或分支重設錯誤)、使用session.refresh(true)重新整理工作階段,以及重試認可次數有限的方式,實作認可作業的限制式重試邏輯。
  4. 請確定重試邏輯強制嚴格限制以防止無限回圈或過度重試,維持系統穩定性並避免不必要的資源使用。
  5. 套用這些變更後,監視工作的佇列深度和錯誤記錄檔,以確認確認確認確認衝突的頻率降低,工作處理穩定。
  6. 不需要變更平台或基礎架構,因為不會牽涉到基礎的AEM環境和容器健康情況。

相關閱讀

Assets不在AEMaaCS中從上傳移至目標資料夾

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