2016-02-23 132 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