diff --git a/doc/XXL-JOB官方文档.md b/doc/XXL-JOB官方文档.md index 86fc56c6..f30f1722 100644 --- a/doc/XXL-JOB官方文档.md +++ b/doc/XXL-JOB官方文档.md @@ -2414,17 +2414,19 @@ public void execute() { ### 7.36 版本 v2.5.0 Release Notes[规划中] - 1、【优化】框架基础守护线程异常处理逻辑优化,避免极端情况下因Error导致调度终止问题; - 2、【优化】底层通讯超时时间支持自定义,默认3S;可参考 xxl-job-admin 和 samples 示例代码自行配置; -- 3、【重构】调度线程任务信息更新逻辑优化,避免极端情况下已关闭任务被启动问题; -- 4、【重构】执行器注册逻辑重构,降低多调度中心地址时并发注册问题;注册表“xxl_job_registry”新增唯一索引,避免冗余注册信息存储; -- 5、【优化】部分系统日志优化,提升可读性; -- 6、【优化】合并PR-3616,代码结构注释优化; -- 7、【优化】合并PR-3619,避免调度过程中任务停止边界情况处理逻辑; -- 8、【优化】合并PR-3605,避免子任务是任务本身导致死循环; -- 9、【修复】合并PR-3585,修复全局密码长度不一致问题; -- 10、【优化】合并PR-3518,SQL列别名反引号包裹,提升跨数据迁移兼容性; -- 11、【优化】合并PR-3518、PR-3400,日志表索引优化,提升大日志量情况下日志查询及清理速度; -- 12、[规划中]登陆态Token声称逻辑优化,混淆登陆时间属性,降低token泄漏风险; -- 13、[规划中]升级springboot3.x,解决2.x老版本漏洞类问题。注意,springboot3.x依赖jdk17; +- 3、【修复】调度中心快慢线程池优化拒绝策略,避免因默认AbortPolicy导致调度结果丢失问题; +- 4、【优化】调度中心快慢线程池队列长度提升,缓解因激增任务导致任务积压问题; +- 5、【重构】调度线程任务信息更新逻辑优化,避免极端情况下已关闭任务被启动问题; +- 6、【重构】执行器注册逻辑重构,降低多调度中心地址时并发注册问题;注册表“xxl_job_registry”新增唯一索引,避免冗余注册信息存储; +- 7、【优化】部分系统日志优化,提升可读性; +- 8、【优化】合并PR-3616,代码结构注释优化; +- 9、【优化】合并PR-3619,避免调度过程中任务停止边界情况处理逻辑; +- 10、【优化】合并PR-3605,避免子任务是任务本身导致死循环; +- 11、【修复】合并PR-3585,修复全局密码长度不一致问题; +- 12、【优化】合并PR-3518,SQL列别名反引号包裹,提升跨数据迁移兼容性; +- 13、【优化】合并PR-3518、PR-3400,日志表索引优化,提升大日志量情况下日志查询及清理速度; +- 14、[规划中]登陆态Token声称逻辑优化,混淆登陆时间属性,降低token泄漏风险; +- 15、[规划中]升级springboot3.x,解决2.x老版本漏洞类问题。注意,springboot3.x依赖jdk17; ### TODO LIST - 1、调度隔离:调度中心针对不同执行器,各自维护不同的调度和远程触发组件。 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 a9a96533..e2dca548 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 @@ -30,12 +30,18 @@ public class JobTriggerPoolHelper { XxlJobAdminConfig.getAdminConfig().getTriggerPoolFastMax(), 60L, TimeUnit.SECONDS, - new LinkedBlockingQueue(1000), + new LinkedBlockingQueue(2000), new ThreadFactory() { @Override public Thread newThread(Runnable r) { return new Thread(r, "xxl-job, admin JobTriggerPoolHelper-fastTriggerPool-" + r.hashCode()); } + }, + new RejectedExecutionHandler() { + @Override + public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) { + logger.error(">>>>>>>>>>> xxl-job, admin JobTriggerPoolHelper-fastTriggerPool execute too fast, Runnable="+r.toString() ); + } }); slowTriggerPool = new ThreadPoolExecutor( @@ -43,12 +49,18 @@ public class JobTriggerPoolHelper { XxlJobAdminConfig.getAdminConfig().getTriggerPoolSlowMax(), 60L, TimeUnit.SECONDS, - new LinkedBlockingQueue(2000), + new LinkedBlockingQueue(5000), new ThreadFactory() { @Override public Thread newThread(Runnable r) { return new Thread(r, "xxl-job, admin JobTriggerPoolHelper-slowTriggerPool-" + r.hashCode()); } + }, + new RejectedExecutionHandler() { + @Override + public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) { + logger.error(">>>>>>>>>>> xxl-job, admin JobTriggerPoolHelper-slowTriggerPool execute too fast, Runnable="+r.toString() ); + } }); } @@ -116,6 +128,10 @@ public class JobTriggerPoolHelper { } } + @Override + public String toString() { + return "Job Runnable, jobId:"+jobId; + } }); }