2016-02-23 131 views
2

我們最近將單實例API管理器從1.90升級到1.10。升級似乎是大多是成功的,但任何時候我嘗試加載的服務之一的出版商,它凍結了和日誌報告:WSO2 API管理員升級後錯誤

Error while retrieving the lifecycle actions for lifecycle: APILifeCycle in lifecycle state: null 
    at org.wso2.carbon.governance.api.common.dataobjects.GovernanceArtifactImpl.getAllLifecycleActions(GovernanceArtifactImpl.java:783) 
    at org.wso2.carbon.apimgt.impl.APIProviderImpl.getAPILifeCycleData(APIProviderImpl.java:3306) 
    ... 101 more 
Caused by: org.wso2.carbon.registry.core.exceptions.RegistryException: Resource at '/_system/governance/apimgt/applicationdata/provider/<User>/<API>/v1/api' not associated with aspect 'APILifeCycle' 
    at org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.getResourceAspect(EmbeddedRegistry.java:2592) 
    at org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.getAspectActions(EmbeddedRegistry.java:2627) 
    at org.wso2.carbon.registry.core.caching.CacheBackedRegistry.getAspectActions(CacheBackedRegistry.java:474) 
    at org.wso2.carbon.registry.core.session.UserRegistry.getAspectActionsInternal 

也(我代替敏感信息與<>):

org.wso2.carbon.registry.core.exceptions.RegistryException: Resource at '/_system/governance/apimgt/applicationdata/provider/<USER>/<SERVICE>/v1/api' not associated with aspect 'APILifeCycle' 
    at org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.getResourceAspect(EmbeddedRegistry.java:2592) 
    at org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.getAspectActions(EmbeddedRegistry.java:2627) 
    at org.wso2.carbon.registry.core.caching.CacheBackedRegistry.getAspectActions(CacheBackedRegistry.java:474) 

我花了大量的時間試圖找到這個錯誤發生的代碼,沒有運氣(我不是一個Java開發人員)。你們有什麼想法是什麼導致這個錯誤?所有註冊的服務都是在升級前註冊的。

更新: 如下所示,這是因爲遷移失敗。我深入研究了一下,發現由於SQL不好導致遷移失敗。在遷移的客戶,特別是文件MigrateFrom19To110.java,189線正在執行一個特設的SQL語句:

"UPDATE IDN_OAUTH2_ACCESS_TOKEN SET AUTHZ_USER = ? WHERE AUTHZ_USER = ?" 

這將引發此錯誤:

Must declare the scalar variable "@P0WHERE" 

好像有什麼不對與構建此語句的代碼相關,因爲@POWHERE似乎來自jdbc驅動程序代碼。任何人都可以對此有更多的瞭解嗎?

回答

0

您是否在升級期間運行遷移客戶端?似乎遷移沒有正確進行。步驟如下https://docs.wso2.com/display/AM1100/Upgrading+from+the+Previous+Release

我之所以這樣說是因爲作爲遷移的一部分,我們將'APILifeCycle'生命週期附加到現有的apis上。由於錯誤提示api與生命週期無關,所以我可以猜想問題在於遷移

+0

是的,我按照建議運行客戶端,通過跟隨該文檔到T - 在SQL中有很多SQL錯誤必須修復的遷移腳本(例如,刪除或更改仍然具有索引的列)。但是,一旦我手動刪除了這些限制條件,遷移腳本和遷移客戶端就不會再發生任何錯誤。有沒有辦法解決這個問題,因爲我已經這樣做了?或者我需要將所有東西都回滾並重新開始? – TheNerd