开发者社区> 问答> 正文

elastic-job eventListener 一直报错。。。?报错

我发当报错时  JobExecutionEvent就会重新生成一个对象,由于ID会变,

这两个方法都是根据ID去修改的。所以没有更新成功。

我在debug时发现只要报错,就不会再进来更新不明白这是什么原因造成的

 

展开
收起
爱吃鱼的程序员 2020-06-08 14:17:16 572 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    第一个问题是指为什么报错吗?有两点反馈:

    1.日志太少不足以判断。

    2.建议先别改源码,跑通了再说,改了源码我们由于精力有限,实在无法支持。

    但是我还是觉得这里面有一个奇怪的问题就是由于开启和结束是两个线程在跑,如果我的任务只是一个异步调度,也就是执行和结束都是非常快的情况,有可能会出现结束时间比执行时间早哦。。。。不好意思,由于我修改了源码,而没有考虑到发布事件监听在获取值时多线程的情况下获取到的值是属于线程独立属性,由于一些基础属性值不同步导至一直报错,经过debug已经修复问题。谢谢

    第二个问题知道了哎,最终还是自己发现了问题。这个问题主要是来源于我改了他的源码 JobExecutionEvent这个类的ID的赋值造成的。我是不喜欢UUID,所以改成了自增,当入库成功后再赋值给他就会有问题。因为是多线程操作,当任务执行快时。他的修改操作可能在你还没有赋值ID时就已经发布了。这个时候这个对象就是线程的单独实例,因为线程的可见情况下。这时候再修改是没有做用的。所以导致更新时ID没有不能更新状态。

    第一个问题还得麻烦各位指教一下。。。为什么老报这个。因为我任务执行是正常的

    2020-06-08 14:17:36
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
开源广进-用Service Catalog构造K8S服务能力 立即下载
Spark Compute as a Service @ P 立即下载
低代码开发师(初级)实战教程 立即下载