Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
X
XXL-JOB
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
靳帅
XXL-JOB
Commits
abb4474f
提交
abb4474f
authored
11月 10, 2017
作者:
anthow
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改JobThread捕获Error错误不更新JobLog
上级
be926f81
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
90 行增加
和
82 行删除
+90
-82
JobThread.java
...core/src/main/java/com/xxl/job/core/thread/JobThread.java
+90
-82
没有找到文件。
xxl-job-core/src/main/java/com/xxl/job/core/thread/JobThread.java
浏览文件 @
abb4474f
...
@@ -91,86 +91,94 @@ public class JobThread extends Thread{
...
@@ -91,86 +91,94 @@ public class JobThread extends Thread{
@Override
@Override
public
void
run
()
{
public
void
run
()
{
while
(!
toStop
){
running
=
false
;
while
(!
toStop
){
idleTimes
++;
running
=
false
;
try
{
idleTimes
++;
// to check toStop signal, we need cycle, so wo cannot use queue.take(), instand of poll(timeout)
// handle job
TriggerParam
triggerParam
=
triggerQueue
.
poll
(
3L
,
TimeUnit
.
SECONDS
);
ReturnT
<
String
>
executeResult
=
null
;
if
(
triggerParam
!=
null
)
{
TriggerParam
triggerParam
=
null
;
running
=
true
;
try
{
idleTimes
=
0
;
// to check toStop signal, we need cycle, so wo cannot use queue.take(), instand of poll(timeout)
triggerLogIdSet
.
remove
(
triggerParam
.
getLogId
());
triggerParam
=
triggerQueue
.
poll
(
3L
,
TimeUnit
.
SECONDS
);
if
(
triggerParam
!=
null
)
{
// parse param
running
=
true
;
String
[]
handlerParams
=
(
triggerParam
.
getExecutorParams
()!=
null
&&
triggerParam
.
getExecutorParams
().
trim
().
length
()>
0
)
idleTimes
=
0
;
?
(
String
[])(
Arrays
.
asList
(
triggerParam
.
getExecutorParams
().
split
(
","
)).
toArray
())
:
null
;
triggerLogIdSet
.
remove
(
triggerParam
.
getLogId
());
// handle job
// parse param
ReturnT
<
String
>
executeResult
=
null
;
String
[]
handlerParams
=
(
triggerParam
.
getExecutorParams
()!=
null
&&
triggerParam
.
getExecutorParams
().
trim
().
length
()>
0
)
try
{
?
(
String
[])(
Arrays
.
asList
(
triggerParam
.
getExecutorParams
().
split
(
" "
)).
toArray
())
:
null
;
// log filename: yyyy-MM-dd/9999.log
String
logFileName
=
XxlJobFileAppender
.
makeLogFileName
(
new
Date
(
triggerParam
.
getLogDateTim
()),
triggerParam
.
getLogId
());
try
{
XxlJobFileAppender
.
contextHolder
.
set
(
logFileName
);
// log filename: yyyy-MM-dd/9999.log
ShardingUtil
.
setShardingVo
(
new
ShardingUtil
.
ShardingVO
(
triggerParam
.
getBroadcastIndex
(),
triggerParam
.
getBroadcastTotal
()));
String
logFileName
=
XxlJobFileAppender
.
makeLogFileName
(
new
Date
(
triggerParam
.
getLogDateTim
()),
triggerParam
.
getLogId
());
XxlJobLogger
.
log
(
"<br>----------- xxl-job job execute start -----------<br>----------- Params:"
+
Arrays
.
toString
(
handlerParams
));
XxlJobFileAppender
.
contextHolder
.
set
(
logFileName
);
executeResult
=
handler
.
execute
(
handlerParams
);
ShardingUtil
.
setShardingVo
(
new
ShardingUtil
.
ShardingVO
(
triggerParam
.
getBroadcastIndex
(),
triggerParam
.
getBroadcastTotal
()));
if
(
executeResult
==
null
)
{
XxlJobLogger
.
log
(
"<br>----------- xxl-job job execute start -----------<br>----------- Params:"
+
Arrays
.
toString
(
handlerParams
));
executeResult
=
ReturnT
.
FAIL
;
}
executeResult
=
handler
.
execute
(
handlerParams
);
if
(
executeResult
==
null
)
{
XxlJobLogger
.
log
(
"<br>----------- xxl-job job execute end(finish) -----------<br>----------- ReturnT:"
+
executeResult
);
executeResult
=
ReturnT
.
FAIL
;
}
catch
(
Exception
e
)
{
}
if
(
toStop
)
{
XxlJobLogger
.
log
(
"<br>----------- JobThread toStop, stopReason:"
+
stopReason
);
XxlJobLogger
.
log
(
"<br>----------- xxl-job job execute end(finish) -----------<br>----------- ReturnT:"
+
executeResult
);
}
}
catch
(
Exception
e
)
{
if
(
toStop
)
{
StringWriter
stringWriter
=
new
StringWriter
();
XxlJobLogger
.
log
(
"<br>----------- JobThread toStop, stopReason:"
+
stopReason
);
e
.
printStackTrace
(
new
PrintWriter
(
stringWriter
));
}
String
errorMsg
=
stringWriter
.
toString
();
executeResult
=
new
ReturnT
<
String
>(
ReturnT
.
FAIL_CODE
,
errorMsg
);
StringWriter
stringWriter
=
new
StringWriter
();
e
.
printStackTrace
(
new
PrintWriter
(
stringWriter
));
XxlJobLogger
.
log
(
"<br>----------- JobThread Exception:"
+
errorMsg
+
"<br>----------- xxl-job job execute end(error) -----------"
);
String
errorMsg
=
stringWriter
.
toString
();
}
executeResult
=
new
ReturnT
<
String
>(
ReturnT
.
FAIL_CODE
,
errorMsg
);
// callback handler info
XxlJobLogger
.
log
(
"<br>----------- JobThread Exception:"
+
errorMsg
+
"<br>----------- xxl-job job execute end(error) -----------"
);
if
(!
toStop
)
{
}
// commonm
TriggerCallbackThread
.
pushCallBack
(
new
HandleCallbackParam
(
triggerParam
.
getLogId
(),
executeResult
));
}
else
{
}
else
{
if
(
idleTimes
>
30
)
{
// is killed
XxlJobExecutor
.
removeJobThread
(
jobId
,
"excutor idel times over limit."
);
ReturnT
<
String
>
stopResult
=
new
ReturnT
<
String
>(
ReturnT
.
FAIL_CODE
,
stopReason
+
" [业务运行中,被强制终止]"
);
}
TriggerCallbackThread
.
pushCallBack
(
new
HandleCallbackParam
(
triggerParam
.
getLogId
(),
stopResult
));
}
}
}
catch
(
Throwable
e
)
{
}
else
{
if
(
toStop
)
{
if
(
idleTimes
>
30
)
{
XxlJobLogger
.
log
(
"<br>----------- xxl-job toStop, stopReason:"
+
stopReason
);
XxlJobExecutor
.
removeJobThread
(
jobId
,
"excutor idel times over limit."
);
}
}
}
StringWriter
stringWriter
=
new
StringWriter
();
}
catch
(
Throwable
e
)
{
e
.
printStackTrace
(
new
PrintWriter
(
stringWriter
));
if
(
toStop
)
{
String
errorMsg
=
stringWriter
.
toString
();
XxlJobLogger
.
log
(
"<br>----------- xxl-job toStop, stopReason:"
+
stopReason
);
executeResult
=
new
ReturnT
<
String
>(
ReturnT
.
FAIL_CODE
,
errorMsg
);
}
XxlJobLogger
.
log
(
"----------- xxl-job JobThread Exception:"
+
errorMsg
);
StringWriter
stringWriter
=
new
StringWriter
();
}
finally
{
e
.
printStackTrace
(
new
PrintWriter
(
stringWriter
));
if
(
triggerParam
!=
null
)
{
String
errorMsg
=
stringWriter
.
toString
();
// callback handler info
XxlJobLogger
.
log
(
"----------- xxl-job JobThread Exception:"
+
errorMsg
);
if
(!
toStop
)
{
}
// commonm
}
TriggerCallbackThread
.
pushCallBack
(
new
HandleCallbackParam
(
triggerParam
.
getLogId
(),
executeResult
));
}
else
{
// callback trigger request in queue
// is killed
while
(
triggerQueue
!=
null
&&
triggerQueue
.
size
()>
0
){
ReturnT
<
String
>
stopResult
=
new
ReturnT
<
String
>(
ReturnT
.
FAIL_CODE
,
stopReason
+
" [业务运行中,被强制终止]"
);
TriggerParam
triggerParam
=
triggerQueue
.
poll
();
TriggerCallbackThread
.
pushCallBack
(
new
HandleCallbackParam
(
triggerParam
.
getLogId
(),
stopResult
));
if
(
triggerParam
!=
null
)
{
}
// is killed
}
ReturnT
<
String
>
stopResult
=
new
ReturnT
<
String
>(
ReturnT
.
FAIL_CODE
,
stopReason
+
" [任务尚未执行,在调度队列中被终止]"
);
}
TriggerCallbackThread
.
pushCallBack
(
new
HandleCallbackParam
(
triggerParam
.
getLogId
(),
stopResult
));
}
}
}
// callback trigger request in queue
while
(
triggerQueue
!=
null
&&
triggerQueue
.
size
()>
0
){
logger
.
info
(
">>>>>>>>>>> xxl-job JobThread stoped, hashCode:{}"
,
Thread
.
currentThread
());
TriggerParam
triggerParam
=
triggerQueue
.
poll
();
}
if
(
triggerParam
!=
null
)
{
// is killed
ReturnT
<
String
>
stopResult
=
new
ReturnT
<
String
>(
ReturnT
.
FAIL_CODE
,
stopReason
+
" [任务尚未执行,在调度队列中被终止]"
);
TriggerCallbackThread
.
pushCallBack
(
new
HandleCallbackParam
(
triggerParam
.
getLogId
(),
stopResult
));
}
}
logger
.
info
(
">>>>>>>>>>>> xxl-job JobThread stoped, hashCode:{}"
,
Thread
.
currentThread
());
}
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论