0.17升级0.18后,敏捷项目无法访问,浏览器打开显示空白页

  • Choerodon平台版本: 0.18.0

查看devops日志,循环报错如下:

  • 报错日志:
    2019-07-16 17:32:34.624 ERROR 8 — [nio-8060-exec-9] i.c.websocket.process.ProcessManager : process msg error

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but
found: 2
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:77)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)
at com.sun.proxy.$Proxy139.selectOne(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:166)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:83)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)
at com.sun.proxy.$Proxy172.selectOne(Unknown Source)
at io.choerodon.devops.infra.persistence.impl.DevopsEnvironmentRepositoryImpl.queryByClusterIdAndCode(DevopsEnvironmentRepositoryImpl.java:103)
at io.choerodon.devops.app.service.impl.DeployMsgHandlerServiceImpl.getEnvId(DeployMsgHandlerServiceImpl.java:1619)
at io.choerodon.devops.app.service.impl.DeployMsgHandlerServiceImpl.updateInstanceStatus(DeployMsgHandlerServiceImpl.java:552)
at io.choerodon.devops.app.service.impl.DeployMsgHandlerServiceImpl.helmReleaseInstallFail(DeployMsgHandlerServiceImpl.java:646)
at io.choerodon.devops.app.service.impl.DeployMsgHandlerServiceImpl$$FastClassBySpringCGLIB$$b2587643.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:684)
at io.choerodon.devops.app.service.impl.DeployMsgHandlerServiceImpl$$EnhancerBySpringCGLIB$$a62fc815.helmReleaseInstallFail()
at io.choerodon.devops.api.eventhandler.SocketMessageHandler.process(SocketMessageHandler.java:111)
at io.choerodon.websocket.process.ProcessManager.processInter(ProcessManager.java:88)
at io.choerodon.websocket.process.ProcessManager.process(ProcessManager.java:40)
at io.choerodon.websocket.listener.SimpleMsgListener.onMsg(SimpleMsgListener.java:18)
at io.choerodon.websocket.websocket.SockHandlerDelegate.onMsgReceived(SockHandlerDelegate.java:27)
at io.choerodon.websocket.websocket.SocketHandler.handleTextMessage(SocketHandler.java:73)
at org.springframework.web.socket.handler.AbstractWebSocketHandler.handleMessage(AbstractWebSocketHandler.java:43)
at org.springframework.web.socket.handler.WebSocketHandlerDecorator.handleMessage(WebSocketHandlerDecorator.java:75)
at org.springframework.web.socket.handler.LoggingWebSocketHandlerDecorator.handleMessage(LoggingWebSocketHandlerDecorator.java:56)
at org.springframework.web.socket.handler.ExceptionWebSocketHandlerDecorator.handleMessage(ExceptionWebSocketHandlerDecorator.java:58)
at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.handleTextMessage(StandardWebSocketHandlerAdapter.java:113)
at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.access$000(StandardWebSocketHandlerAdapter.java:42)
at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter$3.onMessage(StandardWebSocketHandlerAdapter.java:84)
at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter$3.onMessage(StandardWebSocketHandlerAdapter.java:81)
at org.apache.tomcat.websocket.WsFrameBase.sendMessageText(WsFrameBase.java:394)
at org.apache.tomcat.websocket.server.WsFrameServer.sendMessageText(WsFrameServer.java:119)
at org.apache.tomcat.websocket.WsFrameBase.processDataText(WsFrameBase.java:495)
at org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:294)
at org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:133)
at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:82)
at org.apache.tomcat.websocket.server.WsFrameServer.doOnDataAvailable(WsFrameServer.java:171)
at org.apache.tomcat.websocket.server.WsFrameServer.notifyDataAvailable(WsFrameServer.java:151)
at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:148)
at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:53)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:813)
Caused by: org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:81)
at sun.reflect.GeneratedMethodAccessor236.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)
… 45 common frames omitted

请问如何解决

补充说明一下,升级过程中重复执行了 代码质量管理(使用Sonarqube) 升级gitlab service 以及 升级workflow service。不知是否是脚本重复执行导致的?

可能是你的devops_env表数据中,对应同一个clusterId存在两个相同的code,也就是曾经在一个集群下创建了两个同名的环境。方便的话,能不能请你执行以下SQL查询:
SELECT tmp.code, tmp.cluster_id
FROM (SELECT COUNT(*) AS count, env.code, env.cluster_id
FROM devops_env env
GROUP BY env.cluster_id, env.code) tmp
INNER JOIN devops_env
WHERE tmp.count > 1 AND tmp.cluster_id IS NOT NULL;

在devops_service数据库

其次,前端空白页可能不是这个异常引起的,你打开浏览器控制台查看有没有异常

非常感谢你的回复。查询的结果是空,不存在tmp.count>1的这种数据。
另外,浏览器报了脚本错误,如下,请指点一下

你好,看报错定位不到错误,需要你这个操作一下。
1、点击错误:


2、点击左下角的花括号,然后截一下格式化后的代码看看:

报错如下,请帮忙看看

你好,看了下应该是这个接口返回的数据有问题,麻烦截一下这个返回的数据,主要是返回的list参数。

你好,这儿没有数据返回呢

你好,看返回的数据,agile-service应该还是0.17版本,没有升级到0.18。请检查一下。

确实是这个问题。。低级了。。 :handshake: