This is an automated email from the ASF dual-hosted git repository.
lidongdai pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new f929c6f [optimization]:prevent repeated database updates (#2396)
f929c6f is described below
commit f929c6f3b7a43b78db977206c3425d88ae3c357b
Author: songgg <[email protected]>
AuthorDate: Thu Apr 16 22:50:26 2020 +0800
[optimization]:prevent repeated database updates (#2396)
* sqlTask failed to run
* prevent repeated database updates
* prevent repeated database updates
* prevent repeated database updates
Co-authored-by: songqh <[email protected]>
Co-authored-by: dailidong <[email protected]>
---
.../api/service/ExecutorService.java | 25 +++++++++++-----------
.../server/master/runner/MasterExecThread.java | 2 +-
2 files changed, 13 insertions(+), 14 deletions(-)
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ExecutorService.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ExecutorService.java
index 7ce7497..d290886 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ExecutorService.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ExecutorService.java
@@ -225,20 +225,14 @@ public class ExecutorService extends BaseService{
if (processInstance.getState() == ExecutionStatus.READY_STOP) {
putMsg(result, Status.PROCESS_INSTANCE_ALREADY_CHANGED,
processInstance.getName(), processInstance.getState());
} else {
- processInstance.setCommandType(CommandType.STOP);
- processInstance.addHistoryCmd(CommandType.STOP);
- processService.updateProcessInstance(processInstance);
- result = updateProcessInstanceState(processInstanceId,
ExecutionStatus.READY_STOP);
+ result = updateProcessInstancePrepare(processInstance,
CommandType.STOP, ExecutionStatus.READY_STOP);
}
break;
case PAUSE:
if (processInstance.getState() == ExecutionStatus.READY_PAUSE)
{
putMsg(result, Status.PROCESS_INSTANCE_ALREADY_CHANGED,
processInstance.getName(), processInstance.getState());
} else {
- processInstance.setCommandType(CommandType.PAUSE);
- processInstance.addHistoryCmd(CommandType.PAUSE);
- processService.updateProcessInstance(processInstance);
- result = updateProcessInstanceState(processInstanceId,
ExecutionStatus.READY_PAUSE);
+ result = updateProcessInstancePrepare(processInstance,
CommandType.PAUSE, ExecutionStatus.READY_PAUSE);
}
break;
default:
@@ -308,22 +302,27 @@ public class ExecutorService extends BaseService{
}
/**
- * update process instance state
+ * prepare to update process instance command type and status
*
- * @param processInstanceId process instance id
+ * @param processInstance process instance
+ * @param commandType command type
* @param executionStatus execute status
* @return update result
*/
- private Map<String, Object> updateProcessInstanceState(Integer
processInstanceId, ExecutionStatus executionStatus) {
+ private Map<String, Object> updateProcessInstancePrepare(ProcessInstance
processInstance, CommandType commandType, ExecutionStatus executionStatus) {
Map<String, Object> result = new HashMap<>(5);
- int update =
processService.updateProcessInstanceState(processInstanceId, executionStatus);
+ processInstance.setCommandType(commandType);
+ processInstance.addHistoryCmd(commandType);
+ processInstance.setState(executionStatus);
+ int update = processService.updateProcessInstance(processInstance);
+
+ // determine whether the process is normal
if (update > 0) {
putMsg(result, Status.SUCCESS);
} else {
putMsg(result, Status.EXECUTE_PROCESS_INSTANCE_ERROR);
}
-
return result;
}
diff --git
a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/MasterExecThread.java
b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/MasterExecThread.java
index b1ac73c..e1e8c09 100644
---
a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/MasterExecThread.java
+++
b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/MasterExecThread.java
@@ -914,7 +914,7 @@ public class MasterExecThread implements Runnable {
processInstance.getId(), processInstance.getName(),
processInstance.getState(), state,
processInstance.getCommandType());
- processInstance.setState(state);
+
ProcessInstance instance =
processService.findProcessInstanceById(processInstance.getId());
instance.setState(state);
instance.setProcessDefinition(processInstance.getProcessDefinition());