Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
DolphinScheduler
提交
4fe37634
DolphinScheduler
项目概览
apache
/
DolphinScheduler
上一次同步 接近 2 年
通知
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,发现更多精彩内容 >>
未验证
提交
4fe37634
编写于
8月 17, 2022
作者:
W
Wenjun Ruan
提交者:
GitHub
8月 17, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #49 from ruanwenjun/dev_wenjun_fixAsyncDelay
Fix getDelay method always return delay interval
上级
c01dba9e
dafed8b4
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
18 addition
and
4 deletion
+18
-4
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
+11
-2
dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/runner/AsyncTaskDelayQueue.java
...inscheduler/server/worker/runner/AsyncTaskDelayQueue.java
+7
-2
未找到文件。
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/async/AsyncTaskExecutionContext.java
浏览文件 @
4fe37634
...
...
@@ -33,20 +33,29 @@ public class AsyncTaskExecutionContext implements Delayed {
private
final
AsyncTaskCallbackFunction
asyncTaskCallbackFunction
;
private
long
currentStartTime
;
private
final
long
executeInterval
;
public
AsyncTaskExecutionContext
(
@NonNull
TaskExecutionContext
taskExecutionContext
,
@NonNull
AsyncTaskExecuteFunction
asyncTaskExecuteFunction
,
@NonNull
AsyncTaskCallbackFunction
asyncTaskCallbackFunction
)
{
this
.
taskExecutionContext
=
taskExecutionContext
;
this
.
asyncTaskExecuteFunction
=
asyncTaskExecuteFunction
;
this
.
asyncTaskCallbackFunction
=
asyncTaskCallbackFunction
;
this
.
currentStartTime
=
System
.
currentTimeMillis
();
this
.
executeInterval
=
Math
.
max
(
asyncTaskExecuteFunction
.
getTaskExecuteInterval
().
toMillis
(),
1000L
);
}
public
void
refreshStartTime
()
{
currentStartTime
=
System
.
currentTimeMillis
();
}
@Override
public
long
getDelay
(
TimeUnit
unit
)
{
long
intervalSeconds
=
Math
.
max
(
asyncTaskExecuteFunction
.
getTaskExecuteInterval
().
getSeconds
(),
1
);
return
unit
.
convert
(
intervalSeconds
,
TimeUnit
.
SECONDS
);
return
unit
.
convert
(
currentStartTime
+
executeInterval
-
System
.
currentTimeMillis
(),
TimeUnit
.
MILLISECONDS
);
}
@Override
public
int
compareTo
(
Delayed
o
)
{
if
(
o
==
null
)
{
...
...
dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/runner/AsyncTaskDelayQueue.java
浏览文件 @
4fe37634
...
...
@@ -19,11 +19,15 @@ package org.apache.dolphinscheduler.server.worker.runner;
import
lombok.NonNull
;
import
lombok.experimental.UtilityClass
;
import
org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContext
;
import
org.apache.dolphinscheduler.plugin.task.api.async.AsyncTaskCallbackFunction
;
import
org.apache.dolphinscheduler.plugin.task.api.async.AsyncTaskExecuteFunction
;
import
org.apache.dolphinscheduler.plugin.task.api.async.AsyncTaskExecutionContext
;
import
org.apache.dolphinscheduler.plugin.task.api.async.AsyncTaskExecutionStatus
;
import
javax.annotation.Nullable
;
import
java.time.Duration
;
import
java.util.concurrent.DelayQueue
;
import
java.util.concurrent.TimeUnit
;
@UtilityClass
public
class
AsyncTaskDelayQueue
{
...
...
@@ -31,11 +35,12 @@ public class AsyncTaskDelayQueue {
private
final
DelayQueue
<
AsyncTaskExecutionContext
>
asyncTaskCheckDelayQueue
=
new
DelayQueue
<>();
public
void
addAsyncTask
(
@NonNull
AsyncTaskExecutionContext
asyncTaskExecutionContext
)
{
asyncTaskExecutionContext
.
refreshStartTime
();
asyncTaskCheckDelayQueue
.
add
(
asyncTaskExecutionContext
);
}
public
@Nullable
AsyncTaskExecutionContext
pollAsyncTask
()
throws
InterruptedException
{
return
asyncTaskCheckDelayQueue
.
poll
(
1
,
TimeUnit
.
MINUTES
);
return
asyncTaskCheckDelayQueue
.
take
(
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录