最近有同事反馈有些工作流实例在dolphinscheduler上提交后一直显示停止中,无法调度也未产生任务实例,且在工作流实例界面操作标记全部为灰色,任务实例也无法删除。

日志定位

查看master节点日志,发现有如下异常

[ERROR] 2022-06-13 17:59:45.280 org.apache.dolphinscheduler.server.master.runner.WorkflowExecuteThread:[244] - handler 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: 2at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:78)at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440)at com.sun.proxy.$Proxy91.selectOne(Unknown Source)at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:159)at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:89)at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:61)at com.sun.proxy.$Proxy115.queryByDefinitionCodeAndVersion(Unknown Source)at sun.reflect.GeneratedMethodAccessor124.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)at org.springframework.cache.interceptor.CacheInterceptor.lambda$invoke$0(CacheInterceptor.java:54)at org.springframework.cache.interceptor.CacheAspectSupport.invokeOperation(CacheAspectSupport.java:366)at org.springframework.cache.interceptor.CacheAspectSupport.lambda$handleSynchronizedGet$1(CacheAspectSupport.java:447)at org.springframework.cache.support.NoOpCache.get(NoOpCache.java:76)at org.springframework.cache.interceptor.CacheAspectSupport.handleSynchronizedGet(CacheAspectSupport.java:442)at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:382)at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:345)at org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:64)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215)at com.sun.proxy.$Proxy116.queryByDefinitionCodeAndVersion(Unknown Source)at org.apache.dolphinscheduler.service.process.ProcessService.findTaskDefinition(ProcessService.java:2474)at org.apache.dolphinscheduler.service.process.ProcessService.lambda$getTaskDefineLogListByRelation$4(ProcessService.java:2465)at java.util.HashMap.forEach(HashMap.java:1291)at org.apache.dolphinscheduler.service.process.ProcessService.getTaskDefineLogListByRelation(ProcessService.java:2464)at org.apache.dolphinscheduler.service.process.ProcessService$$FastClassBySpringCGLIB$$ed138739.invoke(<generated>)at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689)at org.apache.dolphinscheduler.service.process.ProcessService$$EnhancerBySpringCGLIB$$ec695045.getTaskDefineLogListByRelation(<generated>)at org.apache.dolphinscheduler.server.master.runner.WorkflowExecuteThread.buildFlowDag(WorkflowExecuteThread.java:578)at org.apache.dolphinscheduler.server.master.runner.WorkflowExecuteThread.startProcess(WorkflowExecuteThread.java:542)at org.apache.dolphinscheduler.server.master.runner.WorkflowExecuteThread.run(WorkflowExecuteThread.java:239)at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:125)at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:57)at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:78)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)
Caused by: org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:80)at sun.reflect.GeneratedMethodAccessor98.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:426)... 42 common frames omitted

关键信息 Expected one result (or null) to be returned by selectOne(), but found: 2,即sql的查询逻辑是结果为1条,但是却出现2条的情况
定位源码中报错的位置
at org.apache.dolphinscheduler.service.process.ProcessService.findTaskDefinition(ProcessService.java:2474)

源码定位

看源码找到对应的findTaskDefinition方法,返回的是TaskDefinition类

定位queryByDefinitionCodeAndVersion方法的具体实现

查询sql为

    <select id="queryByDefinitionCodeAndVersion" resultType="org.apache.dolphinscheduler.dao.entity.TaskDefinitionLog">select<include refid="baseSql"/>from t_ds_task_definition_logWHERE code = #{code}and version = #{version}</select>

在dolphinsscheduler对应的数据库中,查询t_ds_task_definition_log表

SELECT code ,version,COUNT(*) cnt  from t_ds_task_definition_log group by code ,version order by cnt desc

这是一张任务定义的日志表,理论上同一个版本的任务编码,不应该出现多条数据,而查询发现表中确实存在几个任务有重复数据,而这几个有重复数据的任务恰好都属于那个无法调度和停止的工作流。

我的做法是手动删除了这些重复数据(同时t_ds_task_definition表里也是有同样的相同数据,也一并删除),并重启master节点。
重启后工作流实例操作界面恢复正常。

此时重启调度任务,任务也可恢复正常调度。


但其实还有个问题,就是这些重复数据是怎么进去的,还需要进一步定位,但是有必要怀疑dolphinscheduler的2.0.5版本在往数据库写入任务信息时出现了事务并发问题。

【异常解决】DolphinScheduler-2.0.5 工作流实例无法调度和停止异常相关推荐

  1. [异常解决] 安卓6.0权限问题导致老蓝牙程序出现异常解决办法:Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission...

    [异常解决] 安卓6.0权限问题导致老蓝牙程序出现异常解决办法:Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission... 参考 ...

  2. macOS Big Sur11.4版本解决MySQL 8.0.x系统偏好里无法启动停止服务的问题,附Launchctl 命令和.plist文件的拓展知识

    一.问题及解决方法 升级了最新的macOS Big Sur11.4后MySQL8.0.x版本的在系统偏好面板里就无法启动了,整个8.0.x版本的MySQL都安装试了一遍还是一样的问题,也没有弹出任何错 ...

  3. 日均处理 10000+ 工作流实例,Apache DolphinScheduler 在 360 数科的实践

    点击上方 蓝字关注我们 从 2020 年起,360 数科全面将调度系统从 Azkaban 迁移到 Apache DolphinScheduler.作为 DolphinScheduler 的资深用户,3 ...

  4. [M]MagicTable转换异常解决方法

    [M]MagicTable转换异常解决方法 参考文章: (1)[M]MagicTable转换异常解决方法 (2)https://www.cnblogs.com/yiyun/p/5259384.html ...

  5. react 中 Warning A future version of React will block javascript 异常解决

    react 中 Warning A future version of React will block javascript 异常解决 问题描述 <a href="javascrip ...

  6. Win7右下角网络图标异常解决方法

    Win7右下角网络图标异常解决方法 许多win7用户电脑右下角的网络图标出现异常,网络已连接但图标显示为红色叉子或周围有无线热点显示小太阳图标.Internet连接正常,图标为红色叹号! 两种解决问题 ...

  7. Parameter 0 of method errorPageCustomizer in ErrorMvcAutoConfiguration 异常解决

    Parameter 0 of method errorPageCustomizer in ErrorMvcAutoConfiguration required a bean of type 'xxx. ...

  8. DolphinScheduler 2.0.5详解

    文章目录 第一章 DolphinScheduler介绍 1.1 关于DolphinScheduler 1.2 DolphinScheduler特性 1.3 配置建议 1.3.1 Linux 操作系统版 ...

  9. Apache DolphinScheduler v2.0.1 Master 和 Worker 执行流程分析系列(三)

    点亮 ⭐️ Star · 照亮开源之路 https://github.com/apache/dolphinscheduler 这是一系列关于 DolphinScheduler v2.0.1的源码分析文 ...

  10. JDK8 stream toMap() java.lang.IllegalStateException: Duplicate key异常解决(key重复)

    测试又报bug啦 接到测试小伙伴的问题,说是一个接口不返回数据了,好吧,虽然不是我写的接口任务落到头上也得解决,本地调试了一下,好家伙,直接抛了个异常出来,这又是哪位大哥喝醉了写的代码... Exce ...

最新文章

  1. LaxTex-----参考文献中同名作者被默认缺省的问题
  2. 【动态规划】最长公共上升子序列
  3. Andriod --- JetPack (一):初识 JetPack
  4. principle导出html5,让Principle成为生产力工具(二)单页面中的联动
  5. 以太坊钱包开发系列4 - 发送Token(代币)
  6. [转]hadoop新手错误解决方法
  7. 云原生领域首本架构白皮书,你Get到了吗?
  8. react实现浏览器自动刷新_react.js怎么实现刷新当前页面?
  9. hash存储结构【六】
  10. 【linux】为什么 mmap 比系统调用快
  11. Android自定义控件学习(七)-------优化视图
  12. windows查看、删除系统级隐藏文件(木马最喜欢用这招)
  13. java 暂停等返回值在执行_java面试技巧(2)
  14. [windows]mstsc远程报:这可能是由于CredSSP 加密Oracle修正的解决方法
  15. Unicode-GBK映射表下载。
  16. 绿点 | 区块链介入下的绿色经济 x 妳格局LadyVision x WinMap+!
  17. 《机关单位办公自动化应用指南 (基于国产信息技术应用创新终端)》
  18. 如何导出微信好友?通讯录好友保存
  19. tekton pipelineresource资源
  20. ImportError: DLL load failed while importing shell: 找不到指定的模块。

热门文章

  1. 技术设计的任务是将功能原理方案得以具体化
  2. 最新 9个免费建站空间 网站均免备案
  3. 计算机中0和1的表示
  4. html css二级下拉菜单,下拉导航 - 两级菜单(CSS/HTML)
  5. Android DocumentFile基本使用
  6. 中科大自主招生2018年笔试数学之四
  7. 双硬盘安装双系统详解
  8. API是什么?API的基础知识你知道多少
  9. 图解yarn的作业提交流程
  10. mp4转换m3u8格式php,m3u8格式怎么转换mp4 ts格式转换 - 下载的m3u8、ts如何转换成mp4...