From 7687f3fc23715a59dd5c77c4c6c3c68bcce71528 Mon Sep 17 00:00:00 2001 From: xuxueli <931591021@qq.com> Date: Sun, 24 Jun 2018 18:07:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E8=B6=85=E6=97=B6=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=EF=BC=9A=E6=94=AF=E6=8C=81=E8=AE=BE=E7=BD=AE=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=B6=85=E6=97=B6=E6=97=B6=E9=97=B4=EF=BC=8C=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=BF=90=E8=A1=8C=E8=B6=85=E6=97=B6=E7=9A=84=E6=83=85?= =?UTF-8?q?=E5=86=B5=E4=B8=8B=EF=BC=8C=E5=B0=86=E4=BC=9A=E4=B8=BB=E5=8A=A8?= =?UTF-8?q?=E4=B8=AD=E6=96=AD=E4=BB=BB=E5=8A=A1=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 36 ++++++------- doc/XXL-JOB官方文档.md | 43 +++++++++------- doc/db/tables_xxl_job.sql | 2 +- .../xxl/job/admin/core/model/XxlJobInfo.java | 34 ++++++------- .../job/admin/core/trigger/XxlJobTrigger.java | 7 +-- .../admin/service/impl/XxlJobServiceImpl.java | 1 + .../main/resources/i18n/message.properties | 5 +- .../main/resources/i18n/message_en.properties | 5 +- .../mybatis-mapper/XxlJobInfoMapper.xml | 16 +++--- .../template/jobinfo/jobinfo.index.ftl | 9 +++- .../main/webapp/static/js/jobinfo.index.1.js | 33 ++++++++++-- .../main/webapp/static/js/joblog.index.1.js | 4 +- .../com/xxl/job/core/biz/model/ReturnT.java | 4 +- .../xxl/job/core/biz/model/TriggerParam.java | 20 ++++---- .../com/xxl/job/core/handler/IJobHandler.java | 4 +- .../com/xxl/job/core/thread/JobThread.java | 51 ++++++++++--------- 16 files changed, 159 insertions(+), 115 deletions(-) diff --git a/README.md b/README.md index 9ea24921..144af652 100644 --- a/README.md +++ b/README.md @@ -54,23 +54,25 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是 - 9、失败处理策略;调度失败时的处理策略,策略包括:失败告警(默认)、失败重试; - 10、失败重试:调度中心调度失败且启用"失败重试"策略时,将会自动重试一次;执行器执行失败且回调失败重试状态时,也将会自动重试一次; - 11、阻塞处理策略:调度过于密集执行器来不及处理时的处理策略,策略包括:单机串行(默认)、丢弃后续调度、覆盖之前调度; -- 12、分片广播任务:执行器集群部署时,任务路由策略选择"分片广播"情况下,一次任务调度将会广播触发集群中所有执行器执行一次任务,可根据分片参数开发分片任务; -- 13、动态分片:分片广播任务以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理;在进行大数据量业务操作时可显著提升任务处理能力和速度。 -- 14、事件触发:除了"Cron方式"和"任务依赖方式"触发任务执行之外,支持基于事件的触发任务方式。调度中心提供触发任务单次执行的API服务,可根据业务事件灵活触发。 -- 15、任务进度监控:支持实时监控任务进度; -- 16、Rolling实时日志:支持在线查看调度结果,并且支持以Rolling方式实时查看执行器输出的完整的执行日志; -- 17、GLUE:提供Web IDE,支持在线开发任务逻辑代码,动态发布,实时编译生效,省略部署上线的过程。支持30个版本的历史版本回溯。 -- 18、脚本任务:支持以GLUE模式开发和运行脚本任务,包括Shell、Python、NodeJS等类型脚本; -- 19、任务依赖:支持配置子任务依赖,当父任务执行结束且执行成功后将会主动触发一次子任务的执行, 多个子任务用逗号分隔; -- 20、一致性:“调度中心”通过DB锁保证集群分布式调度的一致性, 一次任务调度只会触发一次执行; -- 21、自定义任务参数:支持在线配置调度任务入参,即时生效; -- 22、调度线程池:调度系统多线程触发调度运行,确保调度精确执行,不被堵塞; -- 23、数据加密:调度中心和执行器之间的通讯进行数据加密,提升调度信息安全性; -- 24、邮件报警:任务失败时支持邮件报警,支持配置多邮件地址群发报警邮件; -- 25、推送maven中央仓库: 将会把最新稳定版推送到maven中央仓库, 方便用户接入和使用; -- 26、运行报表:支持实时查看运行数据,如任务数量、调度次数、执行器数量等;以及调度报表,如调度日期分布图,调度成功分布图等; -- 27、全异步:系统底层实现全部异步化,针对密集调度进行流量削峰,理论上支持任意时长任务的运行; -- 28、国际化:调度中心支持国际化设置,提供中文、英文两种可选语言,默认为中文; +- 12、任务超时控制:支持设置任务超时时间,任务运行超时的情况下,将会主动中断任务; +- 13、分片广播任务:执行器集群部署时,任务路由策略选择"分片广播"情况下,一次任务调度将会广播触发集群中所有执行器执行一次任务,可根据分片参数开发分片任务; +- 14、动态分片:分片广播任务以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理;在进行大数据量业务操作时可显著提升任务处理能力和速度。 +- 15、事件触发:除了"Cron方式"和"任务依赖方式"触发任务执行之外,支持基于事件的触发任务方式。调度中心提供触发任务单次执行的API服务,可根据业务事件灵活触发。 +- 16、任务进度监控:支持实时监控任务进度; +- 17、Rolling实时日志:支持在线查看调度结果,并且支持以Rolling方式实时查看执行器输出的完整的执行日志; +- 18、GLUE:提供Web IDE,支持在线开发任务逻辑代码,动态发布,实时编译生效,省略部署上线的过程。支持30个版本的历史版本回溯。 +- 19、脚本任务:支持以GLUE模式开发和运行脚本任务,包括Shell、Python、NodeJS等类型脚本; +- 20、任务依赖:支持配置子任务依赖,当父任务执行结束且执行成功后将会主动触发一次子任务的执行, 多个子任务用逗号分隔; +- 21、一致性:“调度中心”通过DB锁保证集群分布式调度的一致性, 一次任务调度只会触发一次执行; +- 22、自定义任务参数:支持在线配置调度任务入参,即时生效; +- 23、调度线程池:调度系统多线程触发调度运行,确保调度精确执行,不被堵塞; +- 24、数据加密:调度中心和执行器之间的通讯进行数据加密,提升调度信息安全性; +- 25、邮件报警:任务失败时支持邮件报警,支持配置多邮件地址群发报警邮件; +- 26、推送maven中央仓库: 将会把最新稳定版推送到maven中央仓库, 方便用户接入和使用; +- 27、运行报表:支持实时查看运行数据,如任务数量、调度次数、执行器数量等;以及调度报表,如调度日期分布图,调度成功分布图等; +- 28、全异步:系统底层实现全部异步化,针对密集调度进行流量削峰,理论上支持任意时长任务的运行; +- 29、国际化:调度中心支持国际化设置,提供中文、英文两种可选语言,默认为中文; + ## Development 于2015年中,我在github上创建XXL-JOB项目仓库并提交第一个commit,随之进行系统结构设计,UI选型,交互设计…… diff --git a/doc/XXL-JOB官方文档.md b/doc/XXL-JOB官方文档.md index 9bba9454..604c53e5 100644 --- a/doc/XXL-JOB官方文档.md +++ b/doc/XXL-JOB官方文档.md @@ -25,23 +25,25 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是 - 9、失败处理策略;调度失败时的处理策略,策略包括:失败告警(默认)、失败重试; - 10、失败重试:调度中心调度失败且启用"失败重试"策略时,将会自动重试一次;执行器执行失败且回调失败重试状态时,也将会自动重试一次; - 11、阻塞处理策略:调度过于密集执行器来不及处理时的处理策略,策略包括:单机串行(默认)、丢弃后续调度、覆盖之前调度; -- 12、分片广播任务:执行器集群部署时,任务路由策略选择"分片广播"情况下,一次任务调度将会广播触发集群中所有执行器执行一次任务,可根据分片参数开发分片任务; -- 13、动态分片:分片广播任务以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理;在进行大数据量业务操作时可显著提升任务处理能力和速度。 -- 14、事件触发:除了"Cron方式"和"任务依赖方式"触发任务执行之外,支持基于事件的触发任务方式。调度中心提供触发任务单次执行的API服务,可根据业务事件灵活触发。 -- 15、任务进度监控:支持实时监控任务进度; -- 16、Rolling实时日志:支持在线查看调度结果,并且支持以Rolling方式实时查看执行器输出的完整的执行日志; -- 17、GLUE:提供Web IDE,支持在线开发任务逻辑代码,动态发布,实时编译生效,省略部署上线的过程。支持30个版本的历史版本回溯。 -- 18、脚本任务:支持以GLUE模式开发和运行脚本任务,包括Shell、Python、NodeJS等类型脚本; -- 19、任务依赖:支持配置子任务依赖,当父任务执行结束且执行成功后将会主动触发一次子任务的执行, 多个子任务用逗号分隔; -- 20、一致性:“调度中心”通过DB锁保证集群分布式调度的一致性, 一次任务调度只会触发一次执行; -- 21、自定义任务参数:支持在线配置调度任务入参,即时生效; -- 22、调度线程池:调度系统多线程触发调度运行,确保调度精确执行,不被堵塞; -- 23、数据加密:调度中心和执行器之间的通讯进行数据加密,提升调度信息安全性; -- 24、邮件报警:任务失败时支持邮件报警,支持配置多邮件地址群发报警邮件; -- 25、推送maven中央仓库: 将会把最新稳定版推送到maven中央仓库, 方便用户接入和使用; -- 26、运行报表:支持实时查看运行数据,如任务数量、调度次数、执行器数量等;以及调度报表,如调度日期分布图,调度成功分布图等; -- 27、全异步:系统底层实现全部异步化,针对密集调度进行流量削峰,理论上支持任意时长任务的运行; -- 28、国际化:调度中心支持国际化设置,提供中文、英文两种可选语言,默认为中文; +- 12、任务超时控制:支持设置任务超时时间,任务运行超时的情况下,将会主动中断任务; +- 13、分片广播任务:执行器集群部署时,任务路由策略选择"分片广播"情况下,一次任务调度将会广播触发集群中所有执行器执行一次任务,可根据分片参数开发分片任务; +- 14、动态分片:分片广播任务以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理;在进行大数据量业务操作时可显著提升任务处理能力和速度。 +- 15、事件触发:除了"Cron方式"和"任务依赖方式"触发任务执行之外,支持基于事件的触发任务方式。调度中心提供触发任务单次执行的API服务,可根据业务事件灵活触发。 +- 16、任务进度监控:支持实时监控任务进度; +- 17、Rolling实时日志:支持在线查看调度结果,并且支持以Rolling方式实时查看执行器输出的完整的执行日志; +- 18、GLUE:提供Web IDE,支持在线开发任务逻辑代码,动态发布,实时编译生效,省略部署上线的过程。支持30个版本的历史版本回溯。 +- 19、脚本任务:支持以GLUE模式开发和运行脚本任务,包括Shell、Python、NodeJS等类型脚本; +- 20、任务依赖:支持配置子任务依赖,当父任务执行结束且执行成功后将会主动触发一次子任务的执行, 多个子任务用逗号分隔; +- 21、一致性:“调度中心”通过DB锁保证集群分布式调度的一致性, 一次任务调度只会触发一次执行; +- 22、自定义任务参数:支持在线配置调度任务入参,即时生效; +- 23、调度线程池:调度系统多线程触发调度运行,确保调度精确执行,不被堵塞; +- 24、数据加密:调度中心和执行器之间的通讯进行数据加密,提升调度信息安全性; +- 25、邮件报警:任务失败时支持邮件报警,支持配置多邮件地址群发报警邮件; +- 26、推送maven中央仓库: 将会把最新稳定版推送到maven中央仓库, 方便用户接入和使用; +- 27、运行报表:支持实时查看运行数据,如任务数量、调度次数、执行器数量等;以及调度报表,如调度日期分布图,调度成功分布图等; +- 28、全异步:系统底层实现全部异步化,针对密集调度进行流量削峰,理论上支持任意时长任务的运行; +- 29、国际化:调度中心支持国际化设置,提供中文、英文两种可选语言,默认为中文; + ### 1.3 发展 于2015年中,我在github上创建XXL-JOB项目仓库并提交第一个commit,随之进行系统结构设计,UI选型,交互设计…… @@ -948,6 +950,11 @@ echo "分片总数 total = $3" 失败 | IJobHandler.FAIL | -1(其他) 失败重试 | IJobHandler.FAIL_RETRY | 101 +### 5.16 任务超时控制 +支持设置任务超时时间,任务运行超时的情况下,将会主动中断任务; + +需要注意的是,任务超时中断时与任务终止机制(可查看“4.8 终止运行中的任务”)类似,也是通过 "interrupt" 中断任务,因此业务代码需要将 "InterruptedException" 外抛,否则功能不可用。 + ## 六、版本更新日志 ### 6.1 版本 V1.1.x,新特性[2015-12-05] @@ -1209,7 +1216,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段 ### 6.22 版本 V1.9.2 特性[迭代中] - 1、[迭代中]支持通过API服务操作任务信息; - 2、[迭代中]任务告警逻辑调整:任务调度,以及任务回调失败时,均推送监控队列。后期考虑通过任务Log字段控制告警状态; -- 3、[迭代中]任务超时设置,超时任务主动终止; +- 3、任务超时控制:支持设置任务超时时间,任务运行超时的情况下,将会主动中断任务; - 4、任务属性枚举 "任务模式、阻塞策略" 国际化优化; - 5、任务日志表状态字段类型优化; - 6、Glue(Shell) 等脚本任务支持失败重试; diff --git a/doc/db/tables_xxl_job.sql b/doc/db/tables_xxl_job.sql index 3ac0d982..1335d3f9 100644 --- a/doc/db/tables_xxl_job.sql +++ b/doc/db/tables_xxl_job.sql @@ -158,12 +158,12 @@ CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_INFO` ( `update_time` datetime DEFAULT NULL, `author` varchar(64) DEFAULT NULL COMMENT '作者', `alarm_email` varchar(255) DEFAULT NULL COMMENT '报警邮件', - `execute_timeout` int(11) NOT NULL DEFAULT 0 COMMENT '任务执行超时时间', `executor_route_strategy` varchar(50) DEFAULT NULL COMMENT '执行器路由策略', `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler', `executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数', `executor_block_strategy` varchar(50) DEFAULT NULL COMMENT '阻塞处理策略', `executor_fail_strategy` varchar(50) DEFAULT NULL COMMENT '失败处理策略', + `executor_timeout` int(11) NOT NULL DEFAULT 0 COMMENT '任务执行超时时间,单位秒', `glue_type` varchar(50) NOT NULL COMMENT 'GLUE类型', `glue_source` text COMMENT 'GLUE源代码', `glue_remark` varchar(128) DEFAULT NULL COMMENT 'GLUE备注', diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java index 01c5227f..b389d20d 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java @@ -4,6 +4,7 @@ import java.util.Date; /** * xxl-job info + * * @author xuxueli 2016-1-12 18:25:49 */ public class XxlJobInfo { @@ -25,6 +26,7 @@ public class XxlJobInfo { private String executorParam; // 执行器,任务参数 private String executorBlockStrategy; // 阻塞处理策略 private String executorFailStrategy; // 失败处理策略 + private int executorTimeout; // 任务执行超时时间,单位秒 private String glueType; // GLUE类型 #com.xxl.job.core.glue.GlueTypeEnum private String glueSource; // GLUE源代码 @@ -36,16 +38,6 @@ public class XxlJobInfo { // copy from quartz private String jobStatus; // 任务状态 【base on quartz】 - private int executeTimeout; // 任务最多执行时间,超时后报警 - - public int getExecuteTimeout() { - return executeTimeout; - } - - public void setExecuteTimeout(int executeTimeout) { - this.executeTimeout = executeTimeout; - } - public int getId() { return id; @@ -111,15 +103,15 @@ public class XxlJobInfo { this.alarmEmail = alarmEmail; } - public String getExecutorRouteStrategy() { - return executorRouteStrategy; - } + public String getExecutorRouteStrategy() { + return executorRouteStrategy; + } - public void setExecutorRouteStrategy(String executorRouteStrategy) { - this.executorRouteStrategy = executorRouteStrategy; - } + public void setExecutorRouteStrategy(String executorRouteStrategy) { + this.executorRouteStrategy = executorRouteStrategy; + } - public String getExecutorHandler() { + public String getExecutorHandler() { return executorHandler; } @@ -151,6 +143,14 @@ public class XxlJobInfo { this.executorFailStrategy = executorFailStrategy; } + public int getExecutorTimeout() { + return executorTimeout; + } + + public void setExecutorTimeout(int executorTimeout) { + this.executorTimeout = executorTimeout; + } + public String getGlueType() { return glueType; } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java index 76811ec2..a4ca6dab 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java @@ -75,6 +75,7 @@ public class XxlJobTrigger { triggerMsgSb.append("
").append(I18nUtil.getString("jobinfo_field_executorRouteStrategy")).append(":").append(executorRouteStrategyEnum.getTitle()).append("("+i+"/"+addressList.size()+")"); // update01 triggerMsgSb.append("
").append(I18nUtil.getString("jobinfo_field_executorBlockStrategy")).append(":").append(blockStrategy.getTitle()); triggerMsgSb.append("
").append(I18nUtil.getString("jobinfo_field_executorFailStrategy")).append(":").append(failStrategy.getTitle()); + triggerMsgSb.append("
").append(I18nUtil.getString("jobinfo_field_timeout")).append(":").append(jobInfo.getExecutorTimeout()); // 3、trigger-valid if (triggerResult.getCode()==ReturnT.SUCCESS_CODE && CollectionUtils.isEmpty(addressList)) { @@ -89,6 +90,7 @@ public class XxlJobTrigger { triggerParam.setExecutorHandler(jobInfo.getExecutorHandler()); triggerParam.setExecutorParams(jobInfo.getExecutorParam()); triggerParam.setExecutorBlockStrategy(jobInfo.getExecutorBlockStrategy()); + triggerParam.setExecutorTimeout(jobInfo.getExecutorTimeout()); triggerParam.setLogId(jobLog.getId()); triggerParam.setLogDateTim(jobLog.getTriggerTime().getTime()); triggerParam.setGlueType(jobInfo.getGlueType()); @@ -96,8 +98,6 @@ public class XxlJobTrigger { triggerParam.setGlueUpdatetime(jobInfo.getGlueUpdatetime().getTime()); triggerParam.setBroadcastIndex(i); triggerParam.setBroadcastTotal(addressList.size()); // update02 - // 执行超时时间 - triggerParam.setExecuteTimeout(jobInfo.getExecuteTimeout()); // 4.2、trigger-run (route run / trigger remote executor) triggerResult = runExecutor(triggerParam, address); // update03 @@ -145,6 +145,7 @@ public class XxlJobTrigger { triggerMsgSb.append("
").append(I18nUtil.getString("jobinfo_field_executorRouteStrategy")).append(":").append(executorRouteStrategyEnum.getTitle()); triggerMsgSb.append("
").append(I18nUtil.getString("jobinfo_field_executorBlockStrategy")).append(":").append(blockStrategy.getTitle()); triggerMsgSb.append("
").append(I18nUtil.getString("jobinfo_field_executorFailStrategy")).append(":").append(failStrategy.getTitle()); + triggerMsgSb.append("
").append(I18nUtil.getString("jobinfo_field_timeout")).append(":").append(jobInfo.getExecutorTimeout()); // 3、trigger-valid if (triggerResult.getCode()==ReturnT.SUCCESS_CODE && CollectionUtils.isEmpty(addressList)) { @@ -159,6 +160,7 @@ public class XxlJobTrigger { triggerParam.setExecutorHandler(jobInfo.getExecutorHandler()); triggerParam.setExecutorParams(jobInfo.getExecutorParam()); triggerParam.setExecutorBlockStrategy(jobInfo.getExecutorBlockStrategy()); + triggerParam.setExecutorTimeout(jobInfo.getExecutorTimeout()); triggerParam.setLogId(jobLog.getId()); triggerParam.setLogDateTim(jobLog.getTriggerTime().getTime()); triggerParam.setGlueType(jobInfo.getGlueType()); @@ -166,7 +168,6 @@ public class XxlJobTrigger { triggerParam.setGlueUpdatetime(jobInfo.getGlueUpdatetime().getTime()); triggerParam.setBroadcastIndex(0); triggerParam.setBroadcastTotal(1); - triggerParam.setExecuteTimeout(jobInfo.getExecuteTimeout()); // 4.2、trigger-run (route run / trigger remote executor) triggerResult = executorRouteStrategyEnum.getRouter().routeRun(triggerParam, addressList); diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java index 3873157f..30ce3c46 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java @@ -208,6 +208,7 @@ public class XxlJobServiceImpl implements XxlJobService { exists_jobInfo.setExecutorParam(jobInfo.getExecutorParam()); exists_jobInfo.setExecutorBlockStrategy(jobInfo.getExecutorBlockStrategy()); exists_jobInfo.setExecutorFailStrategy(jobInfo.getExecutorFailStrategy()); + exists_jobInfo.setExecutorTimeout(jobInfo.getExecutorTimeout()); exists_jobInfo.setChildJobId(jobInfo.getChildJobId()); xxlJobInfoDao.update(exists_jobInfo); diff --git a/xxl-job-admin/src/main/resources/i18n/message.properties b/xxl-job-admin/src/main/resources/i18n/message.properties index 509fb178..6381028d 100644 --- a/xxl-job-admin/src/main/resources/i18n/message.properties +++ b/xxl-job-admin/src/main/resources/i18n/message.properties @@ -30,6 +30,7 @@ system_opt_del=删除 system_unvalid=非法 system_not_found=不存在 system_nav=导航 +system_digits=整数 ## daterangepicker daterangepicker_ranges_recent_hour=最近一小时 @@ -107,7 +108,7 @@ jobinfo_field_gluetype=运行模式 jobinfo_field_executorparam=任务参数 jobinfo_field_cron_unvalid=Cron格式非法 jobinfo_field_author=负责人 -jobinfo_field_timeout=最大执行时间 +jobinfo_field_timeout=任务超时时间 jobinfo_field_alarmemail=报警邮件 jobinfo_field_alarmemail_placeholder=请输入报警邮件,多个邮件地址则逗号分隔 jobinfo_field_executorRouteStrategy=路由策略 @@ -158,7 +159,7 @@ joblog_clean_type_9=清理所有日志数据 joblog_clean_type_unvalid=清理类型参数异常 joblog_handleCode_200=成功 joblog_handleCode_500=失败 -joblog_handleCode_400=超时 +joblog_handleCode_502=超时 joblog_handleCode_501=失败重试 joblog_kill_log=终止任务 joblog_kill_log_limit=调度失败,无法终止日志 diff --git a/xxl-job-admin/src/main/resources/i18n/message_en.properties b/xxl-job-admin/src/main/resources/i18n/message_en.properties index 66f88e71..47c6c47f 100644 --- a/xxl-job-admin/src/main/resources/i18n/message_en.properties +++ b/xxl-job-admin/src/main/resources/i18n/message_en.properties @@ -30,6 +30,7 @@ system_opt_del=Delete system_unvalid=illegal system_not_found=not exist system_nav=Navigation +system_digits=digits ## daterangepicker daterangepicker_ranges_recent_hour=recent one hour @@ -103,7 +104,7 @@ jobinfo_field_update=Edit Job jobinfo_field_id=Job ID jobinfo_field_jobgroup=Executor jobinfo_field_jobdesc=Job description -jobinfo_field_timeout=Max execute time +jobinfo_field_timeout=Job timeout period jobinfo_field_gluetype=GLUE Type jobinfo_field_executorparam=Param jobinfo_field_cron_unvalid=The Cron is illegal @@ -158,7 +159,7 @@ joblog_clean_type_9=Clean up all log data joblog_clean_type_unvalid=Clean type is illegal joblog_handleCode_200=Success joblog_handleCode_500=Fail -joblog_handleCode_400=Timeout +joblog_handleCode_502=Timeout joblog_handleCode_501=Fail retry joblog_kill_log=Kill Job joblog_kill_log_limit=Trigger Fail, can not kill job diff --git a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml index 517e0697..37cf1cd6 100644 --- a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml +++ b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml @@ -21,12 +21,12 @@ + - @@ -45,11 +45,11 @@ t.executor_param, t.executor_block_strategy, t.executor_fail_strategy, + t.executor_timeout, t.glue_type, t.glue_source, t.glue_remark, t.glue_updatetime, - t.execute_timeout, t.child_jobid @@ -101,12 +101,12 @@ executor_param, executor_block_strategy, executor_fail_strategy, + executor_timeout, glue_type, glue_source, glue_remark, glue_updatetime, - child_jobid, - execute_timeout + child_jobid ) VALUES ( #{jobGroup}, #{jobCron}, @@ -120,12 +120,12 @@ #{executorParam}, #{executorBlockStrategy}, #{executorFailStrategy}, + #{executorTimeout}, #{glueType}, #{glueSource}, #{glueRemark}, NOW(), - #{childJobId}, - #{executeTimeout} + #{childJobId} );