Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
X
XXL-JOB
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
靳帅
XXL-JOB
Commits
9f5267c2
提交
9f5267c2
authored
3月 28, 2020
作者:
xuxueli
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
执行器优雅停机优化,修复任务线程中断未join导致回调丢失的问题;
上级
ebe88bd7
显示空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
21 行增加
和
24 行删除
+21
-24
XXL-JOB官方文档.md
doc/XXL-JOB官方文档.md
+8
-7
XxlJobExecutor.java
...c/main/java/com/xxl/job/core/executor/XxlJobExecutor.java
+13
-17
没有找到文件。
doc/XXL-JOB官方文档.md
浏览文件 @
9f5267c2
...
...
@@ -1716,13 +1716,14 @@ public ReturnT<String> execute(String param) {
-
10、移除旧类注解JobHandler,推荐使用基于方法注解 "@XxlJob" 的方式进行任务开发;(如需保留类注解JobHandler使用方式,可以参考旧版逻辑定制开发);
-
11、修复bootstrap.min.css.map 404问题;
-
12、XxlJob注解扫描方式优化,支持查找父类以及接口和基于类代理等常见情况;
-
13、
[
迭代中
]
自定义失败重试时间间隔;
-
14、
[
迭代中
]
任务复制功能;点击复制是弹出新建任务弹框,并初始化被复制任务信息;
-
15、
[
迭代中
]
新增执行器描述、任务描述属性;
-
16、
[
迭代中
]
任务执行一次的时候指定IP;
-
17、
[
迭代中
]
任务日志支持单个清理和状态转移,方便触发子任务;
-
18、
[
迭代中
]
任务结果丢失处理:针对长期处于运行中的任务(设置过期时间时,运行超过"过期时间+1min";未设置超时时间时,运行超过"30min"),主动检测该执行器是否在线,如果不在线主动标记失败;
-
19、
[
迭代中
]
优雅停机回调丢失问题修复;
-
13、执行器优雅停机优化,修复任务线程中断未join导致回调丢失的问题;
-
14、
[
迭代中
]
自定义失败重试时间间隔;
-
15、
[
迭代中
]
任务复制功能;点击复制是弹出新建任务弹框,并初始化被复制任务信息;
-
16、
[
迭代中
]
新增执行器描述、任务描述属性;
-
17、
[
迭代中
]
任务执行一次的时候指定IP;
-
18、
[
迭代中
]
任务日志支持单个清理和状态转移,方便触发子任务;
-
19、
[
迭代中
]
任务结果丢失处理:针对长期处于运行中的任务(设置过期时间时,运行超过"过期时间+1min";未设置超时时间时,运行超过"30min"),主动检测该执行器是否在线,如果不在线主动标记失败;
-
20、
[
迭代中
]
优雅停机回调丢失问题修复;
### TODO LIST
...
...
xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java
浏览文件 @
9f5267c2
...
...
@@ -84,33 +84,26 @@ public class XxlJobExecutor {
initRpcProvider
(
ip
,
port
,
appName
,
accessToken
);
}
public
void
destroy
(){
List
<
JobThread
>
runningThreads
=
new
ArrayList
<>(
jobThreadRepository
.
values
());
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"running threads {}"
,
runningThreads
);
}
// destory executor-server
stopRpcProvider
();
// destory jobThreadRepository
if
(
jobThreadRepository
.
size
()
>
0
)
{
for
(
Map
.
Entry
<
Integer
,
JobThread
>
item:
jobThreadRepository
.
entrySet
())
{
removeJobThread
(
item
.
getKey
(),
"web container destroy and kill the job."
);
JobThread
oldJobThread
=
removeJobThread
(
item
.
getKey
(),
"web container destroy and kill the job."
);
// wait for job thread push result to callback queue
if
(
oldJobThread
!=
null
)
{
try
{
oldJobThread
.
join
();
}
catch
(
InterruptedException
e
)
{
logger
.
error
(
">>>>>>>>>>> xxl-job, JobThread destroy(join) error, jobId:{}"
,
item
.
getKey
(),
e
);
}
}
}
jobThreadRepository
.
clear
();
}
jobHandlerRepository
.
clear
();
for
(
JobThread
runningThread
:
runningThreads
)
{
try
{
// wait for all job thread push result to callback queue
runningThread
.
join
();
}
catch
(
InterruptedException
e
)
{
logger
.
warn
(
"interrupted while stopping {}"
,
runningThread
);
break
;
}
}
// destory JobLogFileCleanThread
JobLogFileCleanThread
.
getInstance
().
toStop
();
...
...
@@ -246,12 +239,15 @@ public class XxlJobExecutor {
return
newJobThread
;
}
public
static
voi
d
removeJobThread
(
int
jobId
,
String
removeOldReason
){
public
static
JobThrea
d
removeJobThread
(
int
jobId
,
String
removeOldReason
){
JobThread
oldJobThread
=
jobThreadRepository
.
remove
(
jobId
);
if
(
oldJobThread
!=
null
)
{
oldJobThread
.
toStop
(
removeOldReason
);
oldJobThread
.
interrupt
();
return
oldJobThread
;
}
return
null
;
}
public
static
JobThread
loadJobThread
(
int
jobId
){
JobThread
jobThread
=
jobThreadRepository
.
get
(
jobId
);
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论