Please answer some questions before submitting your issue. Thanks!
2.3.1
t5zmwmid1#
两个任务公用线程池中的同一线程时,出现日志错乱问题
8hhllhi22#
目前有什么进展吗?有解决方案吗?
neskvpey3#
xxl-job使用threadLocal来保存日志文件地址,当在任务中使用多线程时,两个任务使用同一个线程打印日志,threadLocal只会是其中一个任务的上下文信息(XxlJobContext),导致最终的错乱(使用的是InheritableThreadLocal,该种threadLocal只会继承创建该线程的父线程的threadLocal,不同任务使用线程池复用线程时不会刷新threadLocal)XxlJobHelper.java#L161C15-L161C15
使用TransmittableThreadLocal替代InheritableThreadLocal,以解决threadLocal池化线程中的传递问题@xuxueli
3条答案
按热度按时间t5zmwmid1#
两个任务公用线程池中的同一线程时,出现日志错乱问题
8hhllhi22#
目前有什么进展吗?有解决方案吗?
neskvpey3#
BUG原因分析:
xxl-job使用threadLocal来保存日志文件地址,当在任务中使用多线程时,两个任务使用同一个线程打印日志,threadLocal只会是其中一个任务的上下文信息(XxlJobContext),导致最终的错乱(使用的是InheritableThreadLocal,该种threadLocal只会继承创建该线程的父线程的threadLocal,不同任务使用线程池复用线程时不会刷新threadLocal)
XxlJobHelper.java#L161C15-L161C15
BUG修复建议:
使用TransmittableThreadLocal替代InheritableThreadLocal,以解决threadLocal池化线程中的传递问题
@xuxueli