From e2486f4ec008c02e3089c51b8b639cd755d5979a Mon Sep 17 00:00:00 2001 From: tomzhang170 <896219716@qq.com> Date: Fri, 28 Aug 2020 17:11:55 +0800 Subject: [PATCH] Update TriggerCallbackThread.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 遍历callbacklog目录下的文件时,未排除大小为0的文件,从而让callbacklog目录中未处理的文件越来越多,并且xxl-job日志里有大量的readObject异常信息。callbacklog目录中一般是不会有大小为0的文件,遇到这个问题是有一天服务器硬盘被日志塞满了,腾出空间之后仍然发现xxl-job日志里有大量的readObject异常信息,跟踪进去发现callbacklog目录有2个大小为0的文件,回想应该是服务器的硬盘被日志塞满时,xxl-job往callbacklog目录里写文件失败,以至于后面给服务器腾出了空间,并重启了xxl-job,xxl-job日志里依然有readObject异常信息. --- .../java/com/xxl/job/core/thread/TriggerCallbackThread.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/thread/TriggerCallbackThread.java b/xxl-job-core/src/main/java/com/xxl/job/core/thread/TriggerCallbackThread.java index 3d5bfb72..7f3f27ad 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/thread/TriggerCallbackThread.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/thread/TriggerCallbackThread.java @@ -241,6 +241,9 @@ public class TriggerCallbackThread { // load and clear file, retry for (File callbaclLogFile: callbackLogPath.listFiles()) { byte[] callbackParamList_bytes = FileUtil.readFileContent(callbaclLogFile); + if(callbackParamList_bytes == null || callbackParamList_bytes.length < 1){ + continue; + } List callbackParamList = (List) JdkSerializeTool.deserialize(callbackParamList_bytes, List.class); callbaclLogFile.delete();