You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by we...@apache.org on 2022/06/30 07:58:55 UTC

[dolphinscheduler] branch dev updated: [Improvement-10617] Add comment in slot check (#10618)

This is an automated email from the ASF dual-hosted git repository.

wenjun 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 247ca4ae8a [Improvement-10617] Add comment in slot check (#10618)
247ca4ae8a is described below

commit 247ca4ae8a6d6e7a0580a999e04692a69f885144
Author: Wenjun Ruan <we...@apache.org>
AuthorDate: Thu Jun 30 15:58:49 2022 +0800

    [Improvement-10617] Add comment in slot check (#10618)
---
 .../server/master/runner/MasterSchedulerService.java                 | 5 +++--
 .../apache/dolphinscheduler/service/process/ProcessServiceImpl.java  | 4 +++-
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/runner/MasterSchedulerService.java b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/runner/MasterSchedulerService.java
index bce8753781..5c43256623 100644
--- a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/runner/MasterSchedulerService.java
+++ b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/runner/MasterSchedulerService.java
@@ -207,8 +207,9 @@ public class MasterSchedulerService extends BaseDaemonThread {
         for (final Command command : commands) {
             masterPrepareExecService.execute(() -> {
                 try {
-                    // todo: this check is not safe, the slot may change after command transform.
-                    // slot check again
+                    // Note: this check is not safe, the slot may change after command transform.
+                    // We use the database transaction in `handleCommand` so that we can guarantee the command will always be executed
+                    // by only one master
                     SlotCheckState slotCheckState = slotCheck(command);
                     if (slotCheckState.equals(SlotCheckState.CHANGE) || slotCheckState.equals(SlotCheckState.INJECT)) {
                         logger.info("Master handle command {} skip, slot check state: {}", command.getId(), slotCheckState);
diff --git a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessServiceImpl.java b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessServiceImpl.java
index 495cb82026..97d1266830 100644
--- a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessServiceImpl.java
+++ b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessServiceImpl.java
@@ -138,6 +138,7 @@ import org.apache.dolphinscheduler.spi.enums.ResourceType;
 
 import org.apache.commons.collections.CollectionUtils;
 
+import java.sql.SQLIntegrityConstraintViolationException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
@@ -373,7 +374,8 @@ public class ProcessServiceImpl implements ProcessService {
     }
 
     /**
-     * save error command, and delete original command
+     * Save error command, and delete original command. If the given command has already been moved into error command,
+     * will throw {@link SQLIntegrityConstraintViolationException ).
      *
      * @param command command
      * @param message message