diff --git a/doc/XXL-JOB官方文档.md b/doc/XXL-JOB官方文档.md index 7594e843..2d15e30f 100644 --- a/doc/XXL-JOB官方文档.md +++ b/doc/XXL-JOB官方文档.md @@ -2057,8 +2057,9 @@ data: post-data - 11、执行器示例项目规范整理; - 12、UI组件常规升级,提升组件稳定性; - 13、调度中心远程执行日志查询乱码问题修复; -- 14、[规划中]任务触发参数优化:支持选择 "Cron触发"、"固定间隔时间触发"、"指定时间点触发"、"不选择" 等; -- 15、[规划中]分片任务:全部完成后才会出发后置节点; +- 14、执行器注册表字段优化,解决执行器注册节点过多导致注册信息存储和更新失败的问题; +- 15、[规划中]任务触发参数优化:支持选择 "Cron触发"、"固定间隔时间触发"、"指定时间点触发"、"不选择" 等; +- 16、[规划中]分片任务:全部完成后才会出发后置节点; ### 7.32 版本 v2.3.0 Release Notes[规划中] - 1、[规划中]DAG流程任务 diff --git a/doc/db/tables_xxl_job.sql b/doc/db/tables_xxl_job.sql index f465bb60..09ac2147 100644 --- a/doc/db/tables_xxl_job.sql +++ b/doc/db/tables_xxl_job.sql @@ -60,6 +60,7 @@ CREATE TABLE `xxl_job_log_report` ( `running_count` int(11) NOT NULL DEFAULT '0' COMMENT '运行中-日志数量', `suc_count` int(11) NOT NULL DEFAULT '0' COMMENT '执行成功-日志数量', `fail_count` int(11) NOT NULL DEFAULT '0' COMMENT '执行失败-日志数量', + `update_time` datetime DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `i_trigger_day` (`trigger_day`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; @@ -90,7 +91,8 @@ CREATE TABLE `xxl_job_group` ( `app_name` varchar(64) NOT NULL COMMENT '执行器AppName', `title` varchar(12) NOT NULL COMMENT '执行器名称', `address_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '执行器地址类型:0=自动注册、1=手动录入', - `address_list` varchar(512) DEFAULT NULL COMMENT '执行器地址列表,多地址逗号分隔', + `address_list` text COMMENT '执行器地址列表,多地址逗号分隔', + `update_time` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; @@ -110,7 +112,7 @@ CREATE TABLE `xxl_job_lock` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -INSERT INTO `xxl_job_group`(`id`, `app_name`, `title`, `address_type`, `address_list`) VALUES (1, 'xxl-job-executor-sample', '示例执行器', 0, NULL); +INSERT INTO `xxl_job_group`(`id`, `app_name`, `title`, `address_type`, `address_list`, `update_time`) VALUES (1, 'xxl-job-executor-sample', '示例执行器', 0, NULL, '2018-11-03 22:21:31' ); INSERT INTO `xxl_job_info`(`id`, `job_group`, `job_cron`, `job_desc`, `add_time`, `update_time`, `author`, `alarm_email`, `executor_route_strategy`, `executor_handler`, `executor_param`, `executor_block_strategy`, `executor_timeout`, `executor_fail_retry_count`, `glue_type`, `glue_source`, `glue_remark`, `glue_updatetime`, `child_jobid`) VALUES (1, 1, '0 0 0 * * ? *', '测试任务1', '2018-11-03 22:21:31', '2018-11-03 22:21:31', 'XXL', '', 'FIRST', 'demoJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2018-11-03 22:21:31', ''); INSERT INTO `xxl_job_user`(`id`, `username`, `password`, `role`, `permission`) VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL); INSERT INTO `xxl_job_lock` ( `lock_name`) VALUES ( 'schedule_lock'); diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java index f1d1168a..484d5ba5 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java @@ -83,6 +83,9 @@ public class JobGroupController { } } + // process + xxlJobGroup.setUpdateTime(new Date()); + int ret = xxlJobGroupDao.save(xxlJobGroup); return (ret>0)?ReturnT.SUCCESS:ReturnT.FAIL; } @@ -126,6 +129,9 @@ public class JobGroupController { } } + // process + xxlJobGroup.setUpdateTime(new Date()); + int ret = xxlJobGroupDao.update(xxlJobGroup); return (ret>0)?ReturnT.SUCCESS:ReturnT.FAIL; } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java index f87a7a68..dde4b399 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java @@ -2,6 +2,7 @@ package com.xxl.job.admin.core.model; import java.util.ArrayList; import java.util.Arrays; +import java.util.Date; import java.util.List; /** @@ -14,6 +15,7 @@ public class XxlJobGroup { private String title; private int addressType; // 执行器地址类型:0=自动注册、1=手动录入 private String addressList; // 执行器地址列表,多地址逗号分隔(手动录入) + private Date updateTime; // registry list private List registryList; // 执行器地址列表(系统注册) @@ -60,6 +62,14 @@ public class XxlJobGroup { return addressList; } + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + public void setAddressList(String addressList) { this.addressList = addressList; } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobRegistryMonitorHelper.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobRegistryMonitorHelper.java index cdf82f0f..11d85c52 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobRegistryMonitorHelper.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobRegistryMonitorHelper.java @@ -74,6 +74,8 @@ public class JobRegistryMonitorHelper { addressListStr = addressListStr.substring(0, addressListStr.length()-1); } group.setAddressList(addressListStr); + group.setUpdateTime(new Date()); + XxlJobAdminConfig.getAdminConfig().getXxlJobGroupDao().update(group); } } diff --git a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml index 7635214a..87299f88 100644 --- a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml +++ b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml @@ -9,6 +9,7 @@ + @@ -16,7 +17,8 @@ t.app_name, t.title, t.address_type, - t.address_list + t.address_list, + t.update_time - INSERT INTO xxl_job_group ( `app_name`, `title`, `address_type`, `address_list`) - values ( #{appname}, #{title}, #{addressType}, #{addressList}); + INSERT INTO xxl_job_group ( `app_name`, `title`, `address_type`, `address_list`, `update_time`) + values ( #{appname}, #{title}, #{addressType}, #{addressList}, #{updateTime} ); @@ -42,7 +44,8 @@ SET `app_name` = #{appname}, `title` = #{title}, `address_type` = #{addressType}, - `address_list` = #{addressList} + `address_list` = #{addressList}, + `update_time` = #{updateTime} WHERE id = #{id} diff --git a/xxl-job-admin/src/main/resources/templates/jobgroup/jobgroup.index.ftl b/xxl-job-admin/src/main/resources/templates/jobgroup/jobgroup.index.ftl index 6ef0d7c6..05a6de19 100644 --- a/xxl-job-admin/src/main/resources/templates/jobgroup/jobgroup.index.ftl +++ b/xxl-job-admin/src/main/resources/templates/jobgroup/jobgroup.index.ftl @@ -98,7 +98,7 @@
- +

@@ -142,7 +142,7 @@
- +

diff --git a/xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobGroupDaoTest.java b/xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobGroupDaoTest.java index 0f4edc3b..6846030e 100644 --- a/xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobGroupDaoTest.java +++ b/xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobGroupDaoTest.java @@ -7,6 +7,7 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import javax.annotation.Resource; +import java.util.Date; import java.util.List; @RunWith(SpringRunner.class) @@ -27,6 +28,7 @@ public class XxlJobGroupDaoTest { group.setTitle("setTitle"); group.setAddressType(0); group.setAddressList("setAddressList"); + group.setUpdateTime(new Date()); int ret = xxlJobGroupDao.save(group); @@ -35,6 +37,7 @@ public class XxlJobGroupDaoTest { group2.setTitle("setTitle2"); group2.setAddressType(2); group2.setAddressList("setAddressList2"); + group2.setUpdateTime(new Date()); int ret2 = xxlJobGroupDao.update(group2);