由於OSGi套件啟用衝突,AEM Cloud Manager管道在部署到階段期間卡住

本文說明如何解決Adobe Experience Manager (AEM) Cloud Manager管道在「部署至中繼」階段期間卡住,並由於OSGi套件啟用衝突而造成無法使用的執行個體和遺漏類別錯誤的問題。

說明 description

環境

Adobe Experience Manager (AEM) as a Cloud Service (AEMaaCS) (所有版本)

症狀

  • Cloud Manager管道執行在較長的一段時間(超過一小時)內一直停滯在部署到中繼階段,沒有可見的錯誤或進度。
  • 受影響的環境在部署後變得無法使用。
  • 嘗試存取受影響的執行個體時,會導致空白的登入頁面。
  • 記錄檔顯示/libs/granite/core/content/login.html的遺失類別錯誤、HTTP 500​或​ 404 ​回應,以及健康狀態檢查失敗。
  • 重新啟動AEM無法解決問題;重新啟動後錯誤持續存在。
  • 此問題可能只影響執行個體的子集,表示計時或競爭條件。

原因

部署已更新基礎共用程式庫,觸發OSGi框架重新整理。 自訂元件的啟用方法在此重新整理期間執行封鎖存放庫(JCR)登入,造成鎖定競爭,並使相依套件組合處於半啟動狀態。 這會導致管道停頓,且受影響的執行個體變得無法使用。

解決方法 resolution

請依照下列步驟解決問題:

  1. 識別受影響的環境:

    • 請檢閱Cloud Manager管道執行記錄檔和AEM執行個體記錄檔,以瞭解遺漏類別的錯誤和套件啟用失敗。

    • 確認部署後無法使用的執行個體。

  2. 還原受影響的環境:

    • 使用可用的環境備份,將受影響的執行個體還原至已知的良好狀態。

    • 驗證所有執行個體是否都返回運作狀態,以及登入頁面是否正確載入。

  3. 檢閱自訂OSGi套件啟用邏輯:

    • 檢查自訂OSGi元件,尤其是具有onActivate()個方法的元件,這些方法在啟用期間執行存放庫(JCR)登入或其他封鎖作業。

    • 重構啟動邏輯以避免在OSGi套件組合啟動期間封鎖呼叫或存放庫登入,因為這些可能會在框架重新整理期間造成死鎖或停頓。

    • 尋找程式碼模式,讓存放庫登入或長期執行的操作直接在啟動方法中執行。

  4. 在較低的環境中測試部署:

    • 在部署到生產環境之前,請在較低的環境中測試相同的套件,以驗證問題不會再次發生。
  5. 監控未來部署:

    • 如果發生類似的停頓,請收集日誌和管道執行詳細資料以供進一步分析。

驗證:

  • 確認所有受影響的執行個體皆可運作,且在還原和程式碼變更後,登入頁面可如預期載入。
recommendation-more-help
experience-cloud-kcs-help-kbarticles