由於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
請依照下列步驟解決問題:
-
識別受影響的環境:
-
請檢閱Cloud Manager管道執行記錄檔和AEM執行個體記錄檔,以瞭解遺漏類別的錯誤和套件啟用失敗。
-
確認部署後無法使用的執行個體。
-
-
還原受影響的環境:
-
使用可用的環境備份,將受影響的執行個體還原至已知的良好狀態。
-
驗證所有執行個體是否都返回運作狀態,以及登入頁面是否正確載入。
-
-
檢閱自訂OSGi套件啟用邏輯:
-
檢查自訂OSGi元件,尤其是具有
onActivate()個方法的元件,這些方法在啟用期間執行存放庫(JCR)登入或其他封鎖作業。 -
重構啟動邏輯以避免在OSGi套件組合啟動期間封鎖呼叫或存放庫登入,因為這些可能會在框架重新整理期間造成死鎖或停頓。
-
尋找程式碼模式,讓存放庫登入或長期執行的操作直接在啟動方法中執行。
-
-
在較低的環境中測試部署:
- 在部署到生產環境之前,請在較低的環境中測試相同的套件,以驗證問題不會再次發生。
-
監控未來部署:
- 如果發生類似的停頓,請收集日誌和管道執行詳細資料以供進一步分析。
驗證:
- 確認所有受影響的執行個體皆可運作,且在還原和程式碼變更後,登入頁面可如預期載入。
recommendation-more-help
experience-cloud-kcs-help-kbarticles