xxl-job 线程复用出现日志错乱

enyaitl3  于 4个月前  发布在  其他
关注(0)|答案(3)|浏览(63)

Please answer some questions before submitting your issue. Thanks!

Which version of XXL-JOB do you using?

2.3.1

Expected behavior

Actual behavior

Steps to reproduce the behavior

Other information

t5zmwmid

t5zmwmid1#

两个任务公用线程池中的同一线程时,出现日志错乱问题

8hhllhi2

8hhllhi22#

目前有什么进展吗?有解决方案吗?

neskvpey

neskvpey3#

BUG原因分析:

xxl-job使用threadLocal来保存日志文件地址,当在任务中使用多线程时,两个任务使用同一个线程打印日志,threadLocal只会是其中一个任务的上下文信息(XxlJobContext),导致最终的错乱(使用的是InheritableThreadLocal,该种threadLocal只会继承创建该线程的父线程的threadLocal,不同任务使用线程池复用线程时不会刷新threadLocal)
XxlJobHelper.java#L161C15-L161C15

BUG修复建议:

使用TransmittableThreadLocal替代InheritableThreadLocal,以解决threadLocal池化线程中的传递问题
@xuxueli

相关问题