Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
X
XXL-JOB
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
靳帅
XXL-JOB
Commits
5b280137
提交
5b280137
authored
7月 16, 2019
作者:
xuxueli
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
调度组件优化:针对永远不会触发的Cron禁止配置和启动;任务Cron最后一次触发后再也不会触发时,比如一次性任务,主动停止相关任务;
上级
90eba382
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
42 行增加
和
21 行删除
+42
-21
XXL-JOB官方文档.md
doc/XXL-JOB官方文档.md
+1
-0
JobScheduleHelper.java
...java/com/xxl/job/admin/core/thread/JobScheduleHelper.java
+27
-18
XxlJobServiceImpl.java
...ava/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
+10
-2
message.properties
xxl-job-admin/src/main/resources/i18n/message.properties
+1
-0
message_en.properties
xxl-job-admin/src/main/resources/i18n/message_en.properties
+1
-0
XxlJobInfoMapper.xml
...in/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml
+2
-1
没有找到文件。
doc/XXL-JOB官方文档.md
浏览文件 @
5b280137
...
...
@@ -1519,6 +1519,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
-
8、
[
ING
]
任务、执行器数据全量本地缓存;新增消息表广播通知;
-
9、
[
ING
]
任务触发组件优化,常规1s预加载一次,轮空时主动休眠4s;
-
10、注册监控线程优化,降低死锁几率;
-
11、调度组件优化:针对永远不会触发的Cron禁止配置和启动;任务Cron最后一次触发后再也不会触发时,比如一次性任务,主动停止相关任务;
### TODO LIST
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java
浏览文件 @
5b280137
...
...
@@ -78,12 +78,15 @@ public class JobScheduleHelper {
// 过期超5s:本地忽略,当前时间开始计算下次触发时间
// fresh next
jobInfo
.
setTriggerLastTime
(
jobInfo
.
getTriggerNextTime
());
jobInfo
.
setTriggerNextTime
(
new
CronExpression
(
jobInfo
.
getJobCron
())
.
getNextValidTimeAfter
(
new
Date
())
.
getTime
()
);
Date
nextValidTime
=
new
CronExpression
(
jobInfo
.
getJobCron
()).
getNextValidTimeAfter
(
new
Date
());
if
(
nextValidTime
!=
null
)
{
jobInfo
.
setTriggerLastTime
(
jobInfo
.
getTriggerNextTime
());
jobInfo
.
setTriggerNextTime
(
nextValidTime
.
getTime
());
}
else
{
jobInfo
.
setTriggerStatus
(
0
);
jobInfo
.
setTriggerLastTime
(
0
);
jobInfo
.
setTriggerNextTime
(
0
);
}
}
else
if
(
nowTime
>
jobInfo
.
getTriggerNextTime
())
{
// 过期5s内 :立即触发一次,当前时间开始计算下次触发时间;
...
...
@@ -110,12 +113,15 @@ public class JobScheduleHelper {
pushTimeRing
(
ringSecond
,
jobInfo
.
getId
());
// 3、fresh next
jobInfo
.
setTriggerLastTime
(
jobInfo
.
getTriggerNextTime
());
jobInfo
.
setTriggerNextTime
(
new
CronExpression
(
jobInfo
.
getJobCron
())
.
getNextValidTimeAfter
(
new
Date
(
jobInfo
.
getTriggerNextTime
()))
.
getTime
()
);
Date
nextValidTime
=
new
CronExpression
(
jobInfo
.
getJobCron
()).
getNextValidTimeAfter
(
new
Date
(
jobInfo
.
getTriggerNextTime
()));
if
(
nextValidTime
!=
null
)
{
jobInfo
.
setTriggerLastTime
(
jobInfo
.
getTriggerNextTime
());
jobInfo
.
setTriggerNextTime
(
nextValidTime
.
getTime
());
}
else
{
jobInfo
.
setTriggerStatus
(
0
);
jobInfo
.
setTriggerLastTime
(
0
);
jobInfo
.
setTriggerNextTime
(
0
);
}
}
...
...
@@ -129,12 +135,15 @@ public class JobScheduleHelper {
pushTimeRing
(
ringSecond
,
jobInfo
.
getId
());
// 3、fresh next
jobInfo
.
setTriggerLastTime
(
jobInfo
.
getTriggerNextTime
());
jobInfo
.
setTriggerNextTime
(
new
CronExpression
(
jobInfo
.
getJobCron
())
.
getNextValidTimeAfter
(
new
Date
(
jobInfo
.
getTriggerNextTime
()))
.
getTime
()
);
Date
nextValidTime
=
new
CronExpression
(
jobInfo
.
getJobCron
()).
getNextValidTimeAfter
(
new
Date
(
jobInfo
.
getTriggerNextTime
()));
if
(
nextValidTime
!=
null
)
{
jobInfo
.
setTriggerLastTime
(
jobInfo
.
getTriggerNextTime
());
jobInfo
.
setTriggerNextTime
(
nextValidTime
.
getTime
());
}
else
{
jobInfo
.
setTriggerStatus
(
0
);
jobInfo
.
setTriggerLastTime
(
0
);
jobInfo
.
setTriggerNextTime
(
0
);
}
}
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
浏览文件 @
5b280137
...
...
@@ -194,7 +194,11 @@ public class XxlJobServiceImpl implements XxlJobService {
long
nextTriggerTime
=
exists_jobInfo
.
getTriggerNextTime
();
if
(
exists_jobInfo
.
getTriggerStatus
()
==
1
&&
!
jobInfo
.
getJobCron
().
equals
(
exists_jobInfo
.
getJobCron
())
)
{
try
{
nextTriggerTime
=
new
CronExpression
(
jobInfo
.
getJobCron
()).
getNextValidTimeAfter
(
new
Date
(
System
.
currentTimeMillis
()
+
JobScheduleHelper
.
PRE_READ_MS
)).
getTime
();
Date
nextValidTime
=
new
CronExpression
(
jobInfo
.
getJobCron
()).
getNextValidTimeAfter
(
new
Date
(
System
.
currentTimeMillis
()
+
JobScheduleHelper
.
PRE_READ_MS
));
if
(
nextValidTime
==
null
)
{
return
new
ReturnT
<
String
>(
ReturnT
.
FAIL_CODE
,
I18nUtil
.
getString
(
"jobinfo_field_cron_never_fire"
));
}
nextTriggerTime
=
nextValidTime
.
getTime
();
}
catch
(
ParseException
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
return
new
ReturnT
<
String
>(
ReturnT
.
FAIL_CODE
,
I18nUtil
.
getString
(
"jobinfo_field_cron_unvalid"
)+
" | "
+
e
.
getMessage
());
...
...
@@ -240,7 +244,11 @@ public class XxlJobServiceImpl implements XxlJobService {
// next trigger time (5s后生效,避开预读周期)
long
nextTriggerTime
=
0
;
try
{
nextTriggerTime
=
new
CronExpression
(
xxlJobInfo
.
getJobCron
()).
getNextValidTimeAfter
(
new
Date
(
System
.
currentTimeMillis
()
+
JobScheduleHelper
.
PRE_READ_MS
)).
getTime
();
Date
nextValidTime
=
new
CronExpression
(
xxlJobInfo
.
getJobCron
()).
getNextValidTimeAfter
(
new
Date
(
System
.
currentTimeMillis
()
+
JobScheduleHelper
.
PRE_READ_MS
));
if
(
nextValidTime
==
null
)
{
return
new
ReturnT
<
String
>(
ReturnT
.
FAIL_CODE
,
I18nUtil
.
getString
(
"jobinfo_field_cron_never_fire"
));
}
nextTriggerTime
=
nextValidTime
.
getTime
();
}
catch
(
ParseException
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
return
new
ReturnT
<
String
>(
ReturnT
.
FAIL_CODE
,
I18nUtil
.
getString
(
"jobinfo_field_cron_unvalid"
)+
" | "
+
e
.
getMessage
());
...
...
xxl-job-admin/src/main/resources/i18n/message.properties
浏览文件 @
5b280137
...
...
@@ -109,6 +109,7 @@ jobinfo_field_jobdesc=任务描述
jobinfo_field_gluetype
=
运行模式
jobinfo_field_executorparam
=
任务参数
jobinfo_field_cron_unvalid
=
Cron格式非法
jobinfo_field_cron_never_fire
=
Cron非法,永远不会触发
jobinfo_field_author
=
负责人
jobinfo_field_timeout
=
任务超时时间
jobinfo_field_alarmemail
=
报警邮件
...
...
xxl-job-admin/src/main/resources/i18n/message_en.properties
浏览文件 @
5b280137
...
...
@@ -110,6 +110,7 @@ jobinfo_field_timeout=Job timeout period
jobinfo_field_gluetype
=
GLUE Type
jobinfo_field_executorparam
=
Param
jobinfo_field_cron_unvalid
=
The Cron is illegal
jobinfo_field_cron_never_fire
=
The Cron will never fire
jobinfo_field_author
=
Author
jobinfo_field_alarmemail
=
Alarm email
jobinfo_field_alarmemail_placeholder
=
Please enter alarm mail, if there are more than one comma separated
...
...
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml
浏览文件 @
5b280137
...
...
@@ -219,7 +219,8 @@
UPDATE xxl_job_info
SET
trigger_last_time = #{triggerLastTime},
trigger_next_time = #{triggerNextTime}
trigger_next_time = #{triggerNextTime},
trigger_status = #{triggerStatus}
WHERE id = #{id}
</update>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论