Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
X
XXL-JOB
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
靳帅
XXL-JOB
Commits
c8b9403e
提交
c8b9403e
authored
7月 22, 2016
作者:
xueli.xue
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
coding
上级
8b71e2ce
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
30 行增加
和
25 行删除
+30
-25
JobLogController.java
...n/java/com/xxl/job/admin/controller/JobLogController.java
+1
-1
config.properties
xxl-job-admin/src/main/resources/config.properties
+1
-1
joblog.index.1.js
xxl-job-admin/src/main/webapp/static/js/joblog.index.1.js
+1
-1
HandlerRouter.java
.../src/main/java/com/xxl/job/core/router/HandlerRouter.java
+4
-4
RunAction.java
...c/main/java/com/xxl/job/core/router/action/RunAction.java
+17
-9
JobThread.java
...c/main/java/com/xxl/job/core/router/thread/JobThread.java
+5
-9
TriggerCallbackThread.java
...com/xxl/job/core/router/thread/TriggerCallbackThread.java
+1
-0
没有找到文件。
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java
浏览文件 @
c8b9403e
...
...
@@ -110,7 +110,7 @@ public class JobLogController {
if
(
log
==
null
)
{
return
new
ReturnT
<
String
>(
500
,
"参数异常"
);
}
if
(!
ResponseModel
.
SUCCESS
.
equals
(
log
.
getTriggerStatus
(
)))
{
if
(!
(
ResponseModel
.
SUCCESS
.
equals
(
log
.
getTriggerStatus
())
||
StringUtils
.
isNotBlank
(
log
.
getHandleStatus
()
)))
{
return
new
ReturnT
<
String
>(
500
,
"调度失败,无法查看执行日志"
);
}
...
...
xxl-job-admin/src/main/resources/config.properties
浏览文件 @
c8b9403e
...
...
@@ -4,7 +4,7 @@ mail.port=25
mail.username
=
ovono802302@163.com
mail.password
=
asdfzxcv
mail.sendFrom
=
ovono802302@163.com
mail.sendNick
=
《调度
平台
平台XXL-JOB》
mail.sendNick
=
《调度
调度
平台XXL-JOB》
# for login
login.username
=
admin
...
...
xxl-job-admin/src/main/webapp/static/js/joblog.index.1.js
浏览文件 @
c8b9403e
...
...
@@ -130,7 +130,7 @@ $(function() {
"render"
:
function
(
data
,
type
,
row
)
{
// better support expression or string, not function
return
function
()
{
if
(
row
.
triggerStatus
==
'SUCCESS'
){
if
(
row
.
triggerStatus
==
'SUCCESS'
||
row
.
handleStatus
){
var
temp
=
'<a href="javascript:;" class="logDetail" _id="'
+
row
.
id
+
'">执行日志</a>'
;
if
(
!
row
.
handleStatus
){
temp
+=
'<br><a href="javascript:;" class="logKill" _id="'
+
row
.
id
+
'">终止任务</a>'
;
...
...
xxl-job-core/src/main/java/com/xxl/job/core/router/HandlerRouter.java
浏览文件 @
c8b9403e
...
...
@@ -37,10 +37,10 @@ public class HandlerRouter {
*/
private
static
ConcurrentHashMap
<
String
,
JobThread
>
JobThreadRepository
=
new
ConcurrentHashMap
<
String
,
JobThread
>();
public
static
JobThread
registJobThread
(
String
jobkey
,
IJobHandler
handler
){
JobThread
handler
Thread
=
new
JobThread
(
handler
);
handler
Thread
.
start
();
logger
.
info
(
">>>>>>>>>>> xxl-job regist
handler
success, jobkey:{}, handler:{}"
,
new
Object
[]{
jobkey
,
handler
});
return
HandlerRouter
.
JobThreadRepository
.
put
(
jobkey
,
handler
Thread
);
// putIfAbsent
JobThread
job
Thread
=
new
JobThread
(
handler
);
job
Thread
.
start
();
logger
.
info
(
">>>>>>>>>>> xxl-job regist
JobThread
success, jobkey:{}, handler:{}"
,
new
Object
[]{
jobkey
,
handler
});
return
HandlerRouter
.
JobThreadRepository
.
put
(
jobkey
,
job
Thread
);
// putIfAbsent
}
public
static
JobThread
loadJobThread
(
String
jobKey
){
return
HandlerRouter
.
JobThreadRepository
.
get
(
jobKey
);
...
...
xxl-job-core/src/main/java/com/xxl/job/core/router/action/RunAction.java
浏览文件 @
c8b9403e
...
...
@@ -27,20 +27,17 @@ public class RunAction extends IAction {
// handler instance
IJobHandler
jobHandler
=
HandlerRouter
.
loadJobHandler
(
requestModel
.
getExecutorHandler
());
if
(
jobHandler
==
null
)
{
return
new
ResponseModel
(
ResponseModel
.
FAIL
,
"job handler for jobKey=["
+
jobKey
+
"] not found."
);
}
if
(
jobThread
==
null
)
{
// jobhandler match
if
(
jobHandler
==
null
)
{
return
new
ResponseModel
(
ResponseModel
.
FAIL
,
"job handler for jobKey=["
+
jobKey
+
"] not found."
);
}
jobThread
=
HandlerRouter
.
registJobThread
(
jobKey
,
jobHandler
);
}
else
{
// job handler update, kill old job thread
if
(
jobThread
.
getHandler
()
!=
jobHandler
)
{
// kill old job thread
jobThread
.
toStop
(
"
人工手动终止
"
);
jobThread
.
toStop
(
"
更换任务模式或JobHandler,终止旧任务线程
"
);
jobThread
.
interrupt
();
// new thread, with new job handler
...
...
@@ -49,14 +46,25 @@ public class RunAction extends IAction {
}
}
else
{
// glue model
if
(
jobThread
==
null
)
{
jobThread
=
HandlerRouter
.
registJobThread
(
jobKey
,
new
GlueJobHandler
(
requestModel
.
getJobGroup
(),
requestModel
.
getJobName
()));
}
else
{
// job handler update, kill old job thread
if
(!(
jobThread
.
getHandler
()
instanceof
GlueJobHandler
))
{
// kill old job thread
jobThread
.
toStop
(
"更换任务模式或JobHandler,终止旧任务线程"
);
jobThread
.
interrupt
();
// new thread, with new job handler
jobThread
=
HandlerRouter
.
registJobThread
(
jobKey
,
new
GlueJobHandler
(
requestModel
.
getJobGroup
(),
requestModel
.
getJobName
()));
}
}
}
// sometime, cmap.get can not return given value, i do not know why
jobThread
=
HandlerRouter
.
loadJobThread
(
jobKey
);
if
(
jobThread
==
null
)
{
jobThread
=
HandlerRouter
.
loadJobThread
(
jobKey
);
}
// push data to queue
jobThread
.
pushTriggerQueue
(
requestModel
);
...
...
xxl-job-core/src/main/java/com/xxl/job/core/router/thread/JobThread.java
浏览文件 @
c8b9403e
...
...
@@ -4,7 +4,6 @@ import com.xxl.job.core.handler.IJobHandler;
import
com.xxl.job.core.handler.IJobHandler.JobHandleStatus
;
import
com.xxl.job.core.log.XxlJobFileAppender
;
import
com.xxl.job.core.router.model.RequestModel
;
import
com.xxl.job.core.util.XxlJobNetCommUtil
;
import
org.eclipse.jetty.util.ConcurrentHashSet
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -88,7 +87,7 @@ public class JobThread extends Thread{
e
.
printStackTrace
(
new
PrintWriter
(
out
));
_msg
=
out
.
toString
();
}
logger
.
info
(
"----------- xxl-job job handle end ----------- <br>: ExecutorParams:{}, Status:{}, Msg:{}"
,
logger
.
info
(
"----------- xxl-job job handle end ----------- <br>
Look
: ExecutorParams:{}, Status:{}, Msg:{}"
,
new
Object
[]{
handlerParams
,
_status
,
_msg
});
// callback handler info
...
...
@@ -100,7 +99,7 @@ public class JobThread extends Thread{
}
else
{
// is killed
triggerDate
.
setStatus
(
JobHandleStatus
.
FAIL
.
name
());
triggerDate
.
setMsg
(
stopReason
+
"
人工手动终止
[业务运行中,被强制终止]"
);
triggerDate
.
setMsg
(
stopReason
+
"
[业务运行中,被强制终止]"
);
TriggerCallbackThread
.
pushCallBack
(
triggerDate
);
}
}
...
...
@@ -114,12 +113,9 @@ public class JobThread extends Thread{
RequestModel
triggerDate
=
triggerQueue
.
poll
();
if
(
triggerDate
!=
null
)
{
// is killed
RequestModel
callback
=
new
RequestModel
();
callback
.
setLogAddress
(
XxlJobNetCommUtil
.
addressToUrl
(
triggerDate
.
getLogAddress
()));
callback
.
setLogId
(
triggerDate
.
getLogId
());
callback
.
setStatus
(
JobHandleStatus
.
FAIL
.
name
());
callback
.
setMsg
(
stopReason
+
"[任务尚未执行,在调度队列中被终止]"
);
TriggerCallbackThread
.
pushCallBack
(
callback
);
triggerDate
.
setStatus
(
JobHandleStatus
.
FAIL
.
name
());
triggerDate
.
setMsg
(
stopReason
+
" [任务尚未执行,在调度队列中被终止]"
);
TriggerCallbackThread
.
pushCallBack
(
triggerDate
);
}
}
...
...
xxl-job-core/src/main/java/com/xxl/job/core/router/thread/TriggerCallbackThread.java
浏览文件 @
c8b9403e
...
...
@@ -39,6 +39,7 @@ public class TriggerCallbackThread {
}
public
static
void
pushCallBack
(
RequestModel
callback
){
callBackQueue
.
add
(
callback
);
logger
.
debug
(
">>>>>>>>>>> xxl-job, push callback request, logId:{}"
,
callback
.
getLogId
());
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论