Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
DolphinScheduler
提交
1edc712b
DolphinScheduler
项目概览
apache
/
DolphinScheduler
上一次同步 1 年多
通知
707
Star
9572
Fork
3514
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
DolphinScheduler
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
1edc712b
编写于
8月 22, 2022
作者:
W
Wenjun Ruan
提交者:
GitHub
8月 22, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Optimize timeout in async mode (#64)
(cherry picked from commit
2862f5b6
)
上级
0be6ad3a
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
10 addition
and
11 deletion
+10
-11
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/async/AsyncTaskExecutionContext.java
...uler/plugin/task/api/async/AsyncTaskExecutionContext.java
+10
-11
未找到文件。
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/async/AsyncTaskExecutionContext.java
浏览文件 @
1edc712b
...
...
@@ -20,6 +20,7 @@ package org.apache.dolphinscheduler.plugin.task.api.async;
import
lombok.Data
;
import
lombok.NonNull
;
import
org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContext
;
import
org.apache.dolphinscheduler.plugin.task.api.enums.TaskTimeoutStrategy
;
import
java.util.concurrent.Delayed
;
import
java.util.concurrent.TimeUnit
;
...
...
@@ -47,7 +48,13 @@ public class AsyncTaskExecutionContext implements Delayed {
this
.
asyncTaskCallbackFunction
=
asyncTaskCallbackFunction
;
this
.
currentStartTime
=
0
;
this
.
executeTimes
=
0
;
this
.
timeout
=
taskExecutionContext
.
getStartTime
().
getTime
()
+
TimeUnit
.
SECONDS
.
toMillis
(
taskExecutionContext
.
getTaskTimeout
());
if
(
TaskTimeoutStrategy
.
FAILED
.
equals
(
taskExecutionContext
.
getTaskTimeoutStrategy
())
||
TaskTimeoutStrategy
.
WARNFAILED
.
equals
(
taskExecutionContext
.
getTaskTimeoutStrategy
()))
{
// will timeout
this
.
timeout
=
taskExecutionContext
.
getStartTime
().
getTime
()
+
TimeUnit
.
SECONDS
.
toMillis
(
taskExecutionContext
.
getTaskTimeout
());
}
else
{
this
.
timeout
=
TimeUnit
.
SECONDS
.
toMillis
(
taskExecutionContext
.
getTaskTimeout
());
}
this
.
executeInterval
=
Math
.
max
(
asyncTaskExecuteFunction
.
getTaskExecuteInterval
().
toMillis
(),
1000L
);
}
...
...
@@ -62,16 +69,8 @@ public class AsyncTaskExecutionContext implements Delayed {
@Override
public
long
getDelay
(
TimeUnit
unit
)
{
long
nextExecuteTime
=
currentStartTime
+
executeInterval
;
long
delayTime
;
if
(
nextExecuteTime
>=
timeout
)
{
// has been timeout, clear the timeoutParams
delayTime
=
timeout
-
System
.
currentTimeMillis
();
timeout
=
TimeUnit
.
SECONDS
.
toMillis
(
Integer
.
MAX_VALUE
);
}
else
{
delayTime
=
nextExecuteTime
-
System
.
currentTimeMillis
();
}
return
unit
.
convert
(
delayTime
,
TimeUnit
.
MILLISECONDS
);
long
nextExecuteTimeDelay
=
Math
.
min
(
currentStartTime
+
executeInterval
,
timeout
)
-
System
.
currentTimeMillis
();
return
unit
.
convert
(
nextExecuteTimeDelay
,
TimeUnit
.
MILLISECONDS
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录