测试管理升级报错:{"failed":true,"code":"error.saga.notExist","message":"saga不存在"}

  • Choerodon平台版本: 0.10

  • 遇到问题的执行步骤: 测试管理升级

  • 文档地址:

  • 部署成功之后,需要进行数据升级,数据升级将会把执行逆向生成用例,不同文件夹下的相同用例将复制,并在每一个版本下生成一个临时文件夹,以下是修复步骤

    • 进入 example.choerodon.io/#/iam/api-test 选择 test_manager_service -> test-cycle-controller
    • 点击 /v1/projects/{project_id}/cycle/fix 右侧按钮进入API测试页面
  • 报错日志:
    {
    “timestamp”: “2018-10-16 17:12:51”,
    “status”: 500,
    “error”: “Internal Server Error”,
    “exception”: “feign.FeignException”,
    “message”: “Request processing failed; nested exception is feign.FeignException: status 500 reading SagaClient#startSaga(String,StartInstanceDTO); content:
    {“failed”:true,“code”:“error.saga.notExist”,“message”:“saga不存在”}”,
    “path”: “/v1/projects/5/cycle/fix”
    }

  1. 这是因为test_manager_service服务的saga没有自动扫描进去,重启下test_manager_service,可以看下asgard-service日志,有没有收到test_manager_service服务启动的消息。
  2. 如果asgard收到消息却扫描不进去,添加环境变量CHOERODON_ASGARD_ISLOCAL设置成false

2018-10-16 17:53:50.925 INFO [asgard-service,cde3f7f167925a1d,c75d7cdcc10973be,true] 1 — [ XNIO-3 task-53] i.c.r.h.ControllerExceptionHandler : exception info io.choerodon.core.exception.FeignException: error.saga.notExist
at io.choerodon.asgard.api.service.impl.SagaInstanceServiceImpl.start(SagaInstanceServiceImpl.java:83)
at io.choerodon.asgard.api.service.impl.SagaInstanceServiceImpl$$FastClassBySpringCGLIB$$5e6d631c.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:736)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:671)
at io.choerodon.asgard.api.service.impl.SagaInstanceServiceImpl$$EnhancerBySpringCGLIB$$9c2deabd.start()
at io.choerodon.asgard.api.controller.v1.SagaInstanceController.start(SagaInstanceController.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at io.choerodon.resource.filter.JwtTokenFilter.doFilter(JwtTokenFilter.java:101)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:111)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:208)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.springframework.cloud.sleuth.instrument.web.TraceFilter.doFilter(TraceFilter.java:186)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:106)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at io.micrometer.spring.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:106)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64)
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

asgard-service 日志报错。

asgard-service报错是因为test_manager_service的saga没有扫描进去,参照上面说的 把test_manager_service 服务saga扫描进去就好了

  1. 这是因为 test_manager_service 服务的saga没有自动扫描进去,重启下 test_manager_service ,可以看下 asgard-service 日志,有没有收到 test_manager_service 服务启动的消息。
    ==>
    asgard-service日志有收到test_manager_service的启动消息:
    2018-10-17 09:37:36.238 INFO [asgard-service,] 1 — [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver : Resolving eureka endpoints via configuration
    2018-10-17 09:41:08.349 INFO [asgard-service,] 1 — [ntainer#0-0-C-1] i.c.a.a.e.RegisterInstanceListener : receive message from register-server, {“status”:“UP”,“appName”:“test-manager-service”,“version”:“0.10.2”,“instanceAddress”:“172.20.23.46:8093”,“createTime”:“2018-10-17 09:29:44”}

  2. 如果asgard收到消息却扫描不进去,添加环境变量 CHOERODON_ASGARD_ISLOCAL 设置成 false
    ==》
    已经添加了此环境变量

但是错误仍然存在。

添加环境变量之后重启了一下test_manager_service吗?

2018-10-17 09:41:08.349 INFO [asgard-service,] 1 — [ntainer#0-0-C-1] i.c.a.a.e.RegisterInstanceListener : receive message from register-server, {“status”:“UP”,“appName”:“test-manager-service”,“version”:“0.10.2”,“instanceAddress”:“172.20.23.46:8093”,“createTime”:“2018-10-17 09:29:44”}

重启了。

重启test-mamager-service之后,asgard-service有没有打印扫描不进去原因的日志,比如error.registerConsumer.fetchDataError或者error.registerConsumer.msgConsumerError

没有的。
这是重启过程出现的日志:

2018-10-17 15:06:36.514 INFO [asgard-service,] 1 — [ntainer#0-0-C-1] i.c.a.a.e.RegisterInstanceListener : receive message from register-server, {“status”:“DOWN”,“appName”:“test-manager-service”,“version”:“0.10.2”,“instanceAddress”:“172.20.23.22:8093”,“createTime”:“2018-10-17 14:55:12”}
2018-10-17 15:07:36.299 INFO [asgard-service,] 1 — [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver : Resolving eureka endpoints via configuration
2018-10-17 15:07:43.419 INFO [asgard-service,] 1 — [ XNIO-2 task-5] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at: http://config-server.devops:8010/
2018-10-17 15:07:43.539 INFO [asgard-service,] 1 — [ XNIO-2 task-5] c.c.c.ConfigServicePropertySourceLocator : Located environment: name=manager-service, profiles=[default], label=null, version=null, state=null
2018-10-17 15:07:44.201 INFO [asgard-service,] 1 — [ntainer#0-0-C-1] i.c.a.a.e.RegisterInstanceListener : receive message from register-server, {“status”:“UP”,“appName”:“test-manager-service”,“version”:“0.10.2”,“instanceAddress”:“172.20.23.8:8093”,“createTime”:“2018-10-17 14:56:19”}
2018-10-17 15:07:44.246 WARN [asgard-service,f07bde227aae2bb0,f07bde227aae2bb0,true] 1 — [RxIoScheduler-7] io.choerodon.mybatis.helper.AuditHelper : principal not instanceof CustomUserDetails audit user is 0L

您好,麻烦您执行下
helm update
更新一下镜像源,然后使用如下命令升级一下test-manager-service服务,版本为 0.10.3
helm upgrade test-manager-service c7n/test-manager-service \ -f <(helm get values test-manager-service) \ --version=0.10.3
我们的代码在处理修数据的事件时有些问题,现在已经修复了。抱歉给您造成不便,谢谢您对我平台的支持。

好的 谢谢。

发现这个版本我发现了好几个bug了 是不是有奖 哈哈