diff --git a/doc/XXL-JOB官方文档.md b/doc/XXL-JOB官方文档.md index 677cab11..fe6085de 100644 --- a/doc/XXL-JOB官方文档.md +++ b/doc/XXL-JOB官方文档.md @@ -2401,10 +2401,11 @@ public void execute() { ### 7.36 版本 v2.5.0 Release Notes[规划中] -- 1、【优化】部分系统日志优化,提升可读性; -- 2、[规划中]升级springboot3.x,解决2.x老版本漏洞类问题。注意,springboot3.x依赖jdk17。 -- 3、[规划中]安全功能增强,通讯加密参数改用加密数据避免AccessToken明文, 降低token泄漏风险。 -- 4、[规划中]登陆态Token声称逻辑优化,混淆登陆时间属性,降低token泄漏风险。 +- 1、【优化】框架底层守护线程异常处理逻辑优化,避免极端情况下因Error导致调度终止、丢失问题。 +- 2、【优化】部分系统日志优化,提升可读性; +- 3、[规划中]升级springboot3.x,解决2.x老版本漏洞类问题。注意,springboot3.x依赖jdk17。 +- 4、[规划中]安全功能增强,通讯加密参数改用加密数据避免AccessToken明文, 降低token泄漏风险。 +- 5、[规划中]登陆态Token声称逻辑优化,混淆登陆时间属性,降低token泄漏风险。 ### TODO LIST - 1、调度隔离:调度中心针对不同执行器,各自维护不同的调度和远程触发组件。 diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobCompleteHelper.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobCompleteHelper.java index 5698926a..33e345e4 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobCompleteHelper.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobCompleteHelper.java @@ -65,7 +65,7 @@ public class JobCompleteHelper { // wait for JobTriggerPoolHelper-init try { TimeUnit.MILLISECONDS.sleep(50); - } catch (InterruptedException e) { + } catch (Throwable e) { if (!toStop) { logger.error(e.getMessage(), e); } @@ -92,7 +92,7 @@ public class JobCompleteHelper { } } - } catch (Exception e) { + } catch (Throwable e) { if (!toStop) { logger.error(">>>>>>>>>>> xxl-job, job fail monitor thread error:{}", e); } @@ -100,7 +100,7 @@ public class JobCompleteHelper { try { TimeUnit.SECONDS.sleep(60); - } catch (Exception e) { + } catch (Throwable e) { if (!toStop) { logger.error(e.getMessage(), e); } @@ -127,7 +127,7 @@ public class JobCompleteHelper { monitorThread.interrupt(); try { monitorThread.join(); - } catch (InterruptedException e) { + } catch (Throwable e) { logger.error(e.getMessage(), e); } } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobFailMonitorHelper.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobFailMonitorHelper.java index 8409d7b3..c5d58c59 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobFailMonitorHelper.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobFailMonitorHelper.java @@ -71,7 +71,7 @@ public class JobFailMonitorHelper { } } - } catch (Exception e) { + } catch (Throwable e) { if (!toStop) { logger.error(">>>>>>>>>>> xxl-job, job fail monitor thread error:{}", e); } @@ -79,7 +79,7 @@ public class JobFailMonitorHelper { try { TimeUnit.SECONDS.sleep(10); - } catch (Exception e) { + } catch (Throwable e) { if (!toStop) { logger.error(e.getMessage(), e); } @@ -102,7 +102,7 @@ public class JobFailMonitorHelper { monitorThread.interrupt(); try { monitorThread.join(); - } catch (InterruptedException e) { + } catch (Throwable e) { logger.error(e.getMessage(), e); } } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobLogReportHelper.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobLogReportHelper.java index 2387a0c4..df33cc3a 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobLogReportHelper.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobLogReportHelper.java @@ -87,7 +87,7 @@ public class JobLogReportHelper { } } - } catch (Exception e) { + } catch (Throwable e) { if (!toStop) { logger.error(">>>>>>>>>>> xxl-job, job log report thread error:{}", e); } @@ -121,7 +121,7 @@ public class JobLogReportHelper { try { TimeUnit.MINUTES.sleep(1); - } catch (Exception e) { + } catch (Throwable e) { if (!toStop) { logger.error(e.getMessage(), e); } @@ -144,7 +144,7 @@ public class JobLogReportHelper { logrThread.interrupt(); try { logrThread.join(); - } catch (InterruptedException e) { + } catch (Throwable e) { logger.error(e.getMessage(), e); } } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobRegistryHelper.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobRegistryHelper.java index 37edfd98..05f4a244 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobRegistryHelper.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobRegistryHelper.java @@ -107,14 +107,14 @@ public class JobRegistryHelper { XxlJobAdminConfig.getAdminConfig().getXxlJobGroupDao().update(group); } } - } catch (Exception e) { + } catch (Throwable e) { if (!toStop) { logger.error(">>>>>>>>>>> xxl-job, job registry monitor thread error:{}", e); } } try { TimeUnit.SECONDS.sleep(RegistryConfig.BEAT_TIMEOUT); - } catch (InterruptedException e) { + } catch (Throwable e) { if (!toStop) { logger.error(">>>>>>>>>>> xxl-job, job registry monitor thread error:{}", e); } @@ -138,7 +138,7 @@ public class JobRegistryHelper { registryMonitorThread.interrupt(); try { registryMonitorThread.join(); - } catch (InterruptedException e) { + } catch (Throwable e) { logger.error(e.getMessage(), e); } } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java index 274ffee1..ede3e46f 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java @@ -11,7 +11,6 @@ import org.slf4j.LoggerFactory; import java.sql.Connection; import java.sql.PreparedStatement; -import java.sql.SQLException; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; @@ -44,7 +43,7 @@ public class JobScheduleHelper { try { TimeUnit.MILLISECONDS.sleep(5000 - System.currentTimeMillis()%1000 ); - } catch (InterruptedException e) { + } catch (Throwable e) { if (!scheduleThreadToStop) { logger.error(e.getMessage(), e); } @@ -150,7 +149,7 @@ public class JobScheduleHelper { // tx stop - } catch (Exception e) { + } catch (Throwable e) { if (!scheduleThreadToStop) { logger.error(">>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread error:{}", e); } @@ -160,21 +159,21 @@ public class JobScheduleHelper { if (conn != null) { try { conn.commit(); - } catch (SQLException e) { + } catch (Throwable e) { if (!scheduleThreadToStop) { logger.error(e.getMessage(), e); } } try { conn.setAutoCommit(connAutoCommit); - } catch (SQLException e) { + } catch (Throwable e) { if (!scheduleThreadToStop) { logger.error(e.getMessage(), e); } } try { conn.close(); - } catch (SQLException e) { + } catch (Throwable e) { if (!scheduleThreadToStop) { logger.error(e.getMessage(), e); } @@ -185,7 +184,7 @@ public class JobScheduleHelper { if (null != preparedStatement) { try { preparedStatement.close(); - } catch (SQLException e) { + } catch (Throwable e) { if (!scheduleThreadToStop) { logger.error(e.getMessage(), e); } @@ -200,7 +199,7 @@ public class JobScheduleHelper { try { // pre-read period: success > scan each second; fail > skip this period; TimeUnit.MILLISECONDS.sleep((preReadSuc?1000:PRE_READ_MS) - System.currentTimeMillis()%1000); - } catch (InterruptedException e) { + } catch (Throwable e) { if (!scheduleThreadToStop) { logger.error(e.getMessage(), e); } @@ -227,7 +226,7 @@ public class JobScheduleHelper { // align second try { TimeUnit.MILLISECONDS.sleep(1000 - System.currentTimeMillis() % 1000); - } catch (InterruptedException e) { + } catch (Throwable e) { if (!ringThreadToStop) { logger.error(e.getMessage(), e); } @@ -255,7 +254,7 @@ public class JobScheduleHelper { // clear ringItemData.clear(); } - } catch (Exception e) { + } catch (Throwable e) { if (!ringThreadToStop) { logger.error(">>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread error:{}", e); } @@ -269,7 +268,7 @@ public class JobScheduleHelper { ringThread.start(); } - private void refreshNextValidTime(XxlJobInfo jobInfo, Date fromTime) throws Exception { + private void refreshNextValidTime(XxlJobInfo jobInfo, Date fromTime) { try { Date nextValidTime = generateNextValidTime(jobInfo, fromTime); if (nextValidTime != null) { @@ -283,7 +282,7 @@ public class JobScheduleHelper { logger.error(">>>>>>>>>>> xxl-job, refreshNextValidTime fail for job: jobId={}, scheduleType={}, scheduleConf={}", jobInfo.getId(), jobInfo.getScheduleType(), jobInfo.getScheduleConf()); } - } catch (Exception e) { + } catch (Throwable e) { // generateNextValidTime error, stop job jobInfo.setTriggerStatus(0); jobInfo.setTriggerLastTime(0); @@ -312,7 +311,7 @@ public class JobScheduleHelper { scheduleThreadToStop = true; try { TimeUnit.SECONDS.sleep(1); // wait - } catch (InterruptedException e) { + } catch (Throwable e) { logger.error(e.getMessage(), e); } if (scheduleThread.getState() != Thread.State.TERMINATED){ @@ -320,7 +319,7 @@ public class JobScheduleHelper { scheduleThread.interrupt(); try { scheduleThread.join(); - } catch (InterruptedException e) { + } catch (Throwable e) { logger.error(e.getMessage(), e); } } @@ -339,7 +338,7 @@ public class JobScheduleHelper { if (hasRingData) { try { TimeUnit.SECONDS.sleep(8); - } catch (InterruptedException e) { + } catch (Throwable e) { logger.error(e.getMessage(), e); } } @@ -348,7 +347,7 @@ public class JobScheduleHelper { ringThreadToStop = true; try { TimeUnit.SECONDS.sleep(1); - } catch (InterruptedException e) { + } catch (Throwable e) { logger.error(e.getMessage(), e); } if (ringThread.getState() != Thread.State.TERMINATED){ @@ -356,7 +355,7 @@ public class JobScheduleHelper { ringThread.interrupt(); try { ringThread.join(); - } catch (InterruptedException e) { + } catch (Throwable e) { logger.error(e.getMessage(), e); } } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobTriggerPoolHelper.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobTriggerPoolHelper.java index 398713dd..a9a96533 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobTriggerPoolHelper.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobTriggerPoolHelper.java @@ -93,7 +93,7 @@ public class JobTriggerPoolHelper { try { // do trigger XxlJobTrigger.trigger(jobId, triggerType, failRetryCount, executorShardingParam, executorParam, addressList); - } catch (Exception e) { + } catch (Throwable e) { logger.error(e.getMessage(), e); } finally { diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/server/EmbedServer.java b/xxl-job-core/src/main/java/com/xxl/job/core/server/EmbedServer.java index 540e0ea2..436f3afa 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/server/EmbedServer.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/server/EmbedServer.java @@ -89,14 +89,14 @@ public class EmbedServer { } catch (InterruptedException e) { logger.info(">>>>>>>>>>> xxl-job remoting server stop."); - } catch (Exception e) { + } catch (Throwable e) { logger.error(">>>>>>>>>>> xxl-job remoting server error.", e); } finally { // stop try { workerGroup.shutdownGracefully(); bossGroup.shutdownGracefully(); - } catch (Exception e) { + } catch (Throwable e) { logger.error(e.getMessage(), e); } } @@ -200,7 +200,7 @@ public class EmbedServer { default: return new ReturnT(ReturnT.FAIL_CODE, "invalid request, uri-mapping(" + uri + ") not found."); } - } catch (Exception e) { + } catch (Throwable e) { logger.error(e.getMessage(), e); return new ReturnT(ReturnT.FAIL_CODE, "request error:" + ThrowableUtil.toString(e)); } diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/thread/ExecutorRegistryThread.java b/xxl-job-core/src/main/java/com/xxl/job/core/thread/ExecutorRegistryThread.java index e43a2a49..36b32c95 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/thread/ExecutorRegistryThread.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/thread/ExecutorRegistryThread.java @@ -53,12 +53,12 @@ public class ExecutorRegistryThread { } else { logger.info(">>>>>>>>>>> xxl-job registry fail, registryParam:{}, registryResult:{}", new Object[]{registryParam, registryResult}); } - } catch (Exception e) { + } catch (Throwable e) { logger.info(">>>>>>>>>>> xxl-job registry error, registryParam:{}", registryParam, e); } } - } catch (Exception e) { + } catch (Throwable e) { if (!toStop) { logger.error(e.getMessage(), e); } @@ -69,7 +69,7 @@ public class ExecutorRegistryThread { if (!toStop) { TimeUnit.SECONDS.sleep(RegistryConfig.BEAT_TIMEOUT); } - } catch (InterruptedException e) { + } catch (Throwable e) { if (!toStop) { logger.warn(">>>>>>>>>>> xxl-job, executor registry thread interrupted, error msg:{}", e.getMessage()); } @@ -89,7 +89,7 @@ public class ExecutorRegistryThread { } else { logger.info(">>>>>>>>>>> xxl-job registry-remove fail, registryParam:{}, registryResult:{}", new Object[]{registryParam, registryResult}); } - } catch (Exception e) { + } catch (Throwable e) { if (!toStop) { logger.info(">>>>>>>>>>> xxl-job registry-remove error, registryParam:{}", registryParam, e); } @@ -97,7 +97,7 @@ public class ExecutorRegistryThread { } } - } catch (Exception e) { + } catch (Throwable e) { if (!toStop) { logger.error(e.getMessage(), e); } @@ -119,7 +119,7 @@ public class ExecutorRegistryThread { registryThread.interrupt(); try { registryThread.join(); - } catch (InterruptedException e) { + } catch (Throwable e) { logger.error(e.getMessage(), e); } } diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/thread/JobLogFileCleanThread.java b/xxl-job-core/src/main/java/com/xxl/job/core/thread/JobLogFileCleanThread.java index b5691542..b8dad765 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/thread/JobLogFileCleanThread.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/thread/JobLogFileCleanThread.java @@ -81,7 +81,7 @@ public class JobLogFileCleanThread { } } - } catch (Exception e) { + } catch (Throwable e) { if (!toStop) { logger.error(e.getMessage(), e); } @@ -90,7 +90,7 @@ public class JobLogFileCleanThread { try { TimeUnit.DAYS.sleep(1); - } catch (InterruptedException e) { + } catch (Throwable e) { if (!toStop) { logger.error(e.getMessage(), e); } 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 40acac00..1d272466 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 @@ -76,7 +76,7 @@ public class TriggerCallbackThread { doCallback(callbackParamList); } } - } catch (Exception e) { + } catch (Throwable e) { if (!toStop) { logger.error(e.getMessage(), e); } @@ -90,7 +90,7 @@ public class TriggerCallbackThread { if (callbackParamList!=null && callbackParamList.size()>0) { doCallback(callbackParamList); } - } catch (Exception e) { + } catch (Throwable e) { if (!toStop) { logger.error(e.getMessage(), e); } @@ -111,7 +111,7 @@ public class TriggerCallbackThread { while(!toStop){ try { retryFailCallbackFile(); - } catch (Exception e) { + } catch (Throwable e) { if (!toStop) { logger.error(e.getMessage(), e); } @@ -119,7 +119,7 @@ public class TriggerCallbackThread { } try { TimeUnit.SECONDS.sleep(RegistryConfig.BEAT_TIMEOUT); - } catch (InterruptedException e) { + } catch (Throwable e) { if (!toStop) { logger.error(e.getMessage(), e); } @@ -139,7 +139,7 @@ public class TriggerCallbackThread { triggerCallbackThread.interrupt(); try { triggerCallbackThread.join(); - } catch (InterruptedException e) { + } catch (Throwable e) { logger.error(e.getMessage(), e); } } @@ -149,7 +149,7 @@ public class TriggerCallbackThread { triggerRetryCallbackThread.interrupt(); try { triggerRetryCallbackThread.join(); - } catch (InterruptedException e) { + } catch (Throwable e) { logger.error(e.getMessage(), e); } } @@ -173,7 +173,7 @@ public class TriggerCallbackThread { } else { callbackLog(callbackParamList, "
----------- xxl-job job callback fail, callbackResult:" + callbackResult); } - } catch (Exception e) { + } catch (Throwable e) { callbackLog(callbackParamList, "
----------- xxl-job job callback error, errorMsg:" + e.getMessage()); } }