This is an automated email from the ASF dual-hosted git repository.
zhongjiajie pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new 30fd43e32b feat: Python add online_schedule for workflow control
schedule state (#13551)
30fd43e32b is described below
commit 30fd43e32ba2b156e0c68d8ce15cfbd56263ad62
Author: Jay Chung <[email protected]>
AuthorDate: Tue Mar 7 11:35:01 2023 +0800
feat: Python add online_schedule for workflow control schedule state
(#13551)
related: apache/dolphinscheduler-sdk-python#73
---
.../apache/dolphinscheduler/api/python/PythonGateway.java | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/python/PythonGateway.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/python/PythonGateway.java
index 045598d342..ec2a3cb49a 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/python/PythonGateway.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/python/PythonGateway.java
@@ -220,6 +220,7 @@ public class PythonGateway {
* @param globalParams global params
* @param schedule schedule for workflow, will not set schedule if null,
* and if would always fresh exists schedule if not null
+ * @param onlineSchedule Whether set the workflow's schedule to online
state
* @param warningType warning type
* @param warningGroupId warning group id
* @param timeout timeout for workflow working, if running time longer
than timeout,
@@ -236,6 +237,7 @@ public class PythonGateway {
String description,
String globalParams,
String schedule,
+ boolean onlineSchedule,
String warningType,
int warningGroupId,
int timeout,
@@ -277,7 +279,8 @@ public class PythonGateway {
// Fresh workflow schedule
if (schedule != null) {
- createOrUpdateSchedule(user, projectCode, processDefinitionCode,
schedule, workerGroup, warningType,
+ createOrUpdateSchedule(user, projectCode, processDefinitionCode,
schedule, onlineSchedule, workerGroup,
+ warningType,
warningGroupId);
}
processDefinitionService.releaseProcessDefinition(user, projectCode,
processDefinitionCode,
@@ -319,6 +322,7 @@ public class PythonGateway {
* @param projectCode project which workflow belongs to
* @param workflowCode workflow code
* @param schedule schedule expression
+ * @param onlineSchedule Whether set the workflow's schedule to online
state
* @param workerGroup work group
* @param warningType warning type
* @param warningGroupId warning group id
@@ -327,6 +331,7 @@ public class PythonGateway {
long projectCode,
long workflowCode,
String schedule,
+ boolean onlineSchedule,
String workerGroup,
String warningType,
int warningGroupId) {
@@ -347,9 +352,11 @@ public class PythonGateway {
schedulerService.updateSchedule(user, projectCode, scheduleId,
schedule, WarningType.valueOf(warningType),
warningGroupId, DEFAULT_FAILURE_STRATEGY,
DEFAULT_PRIORITY, workerGroup, DEFAULT_ENVIRONMENT_CODE);
}
- // Always set workflow online to set schedule online
- processDefinitionService.releaseProcessDefinition(user, projectCode,
workflowCode, ReleaseState.ONLINE);
- schedulerService.setScheduleState(user, projectCode, scheduleId,
ReleaseState.ONLINE);
+ if (onlineSchedule) {
+ // set workflow online to make sure we can set schedule online
+ processDefinitionService.releaseProcessDefinition(user,
projectCode, workflowCode, ReleaseState.ONLINE);
+ schedulerService.setScheduleState(user, projectCode, scheduleId,
ReleaseState.ONLINE);
+ }
}
public void execWorkflowInstance(String userName,