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

zihaoxiang 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 06e7935db8 [Chore] Bump testcontainer to `1.21.4` to fix could not 
find a valid Docker environment at CI (#17978)
06e7935db8 is described below

commit 06e7935db8563a1716d4a8d9ada9a8ec8153996e
Author: Wenjun Ruan <[email protected]>
AuthorDate: Sat Feb 21 21:34:19 2026 +0800

    [Chore] Bump testcontainer to `1.21.4` to fix could not find a valid Docker 
environment at CI (#17978)
---
 dolphinscheduler-api-test/pom.xml                  |  2 +-
 dolphinscheduler-bom/pom.xml                       |  2 +-
 .../common/utils/DateUtilsTest.java                |  9 ++---
 .../common/utils/JSONUtilsTest.java                |  9 +++++
 dolphinscheduler-e2e/pom.xml                       |  2 +-
 .../LogicTaskExecutorContainerProvider.java        |  9 +++--
 .../task/dispatcher/WorkerGroupDispatcher.java     | 10 ++++-
 .../WorkerGroupDispatcherCoordinator.java          | 18 ++++++---
 .../task/dispatcher/WorkerGroupDispatcherTest.java | 11 ++++--
 .../server/master/integration/MasterContainer.java | 44 ++++++++++++++++++----
 .../cases/WorkflowSchedulingTestCase.java          |  3 ++
 .../src/test/resources/logback.xml                 |  3 +-
 .../container/ITaskExecutorContainerProvider.java  |  4 +-
 .../PhysicalTaskExecutorContainerProvider.java     |  9 +++--
 pom.xml                                            |  1 +
 15 files changed, 98 insertions(+), 38 deletions(-)

diff --git a/dolphinscheduler-api-test/pom.xml 
b/dolphinscheduler-api-test/pom.xml
index 04e60644ff..dda0840123 100644
--- a/dolphinscheduler-api-test/pom.xml
+++ b/dolphinscheduler-api-test/pom.xml
@@ -37,7 +37,7 @@
 
         <junit.version>5.7.2</junit.version>
         <selenium.version>4.21.0</selenium.version>
-        <testcontainers.version>1.19.8</testcontainers.version>
+        <testcontainers.version>1.21.4</testcontainers.version>
         <lombok.version>1.18.24</lombok.version>
         <assertj-core.version>3.23.1</assertj-core.version>
         <awaitility.version>4.1.0</awaitility.version>
diff --git a/dolphinscheduler-bom/pom.xml b/dolphinscheduler-bom/pom.xml
index 3c863e120a..baaa2b73a5 100644
--- a/dolphinscheduler-bom/pom.xml
+++ b/dolphinscheduler-bom/pom.xml
@@ -119,7 +119,7 @@
         <qcloud-cos.version>5.6.231</qcloud-cos.version>
         <system-lambda.version>1.2.1</system-lambda.version>
         <zeppelin-client.version>0.10.1</zeppelin-client.version>
-        <testcontainer.version>1.19.3</testcontainer.version>
+        <testcontainer.version>1.21.4</testcontainer.version>
         <checker-qual.version>3.19.0</checker-qual.version>
         <zeppelin-client.version>0.10.1</zeppelin-client.version>
         <aliyun-voice.version>2.1.4</aliyun-voice.version>
diff --git 
a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/DateUtilsTest.java
 
b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/DateUtilsTest.java
index e05e350098..35d3265402 100644
--- 
a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/DateUtilsTest.java
+++ 
b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/DateUtilsTest.java
@@ -30,18 +30,15 @@ import javax.management.timer.Timer;
 
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 public class DateUtilsTest {
 
-    @BeforeEach
-    public void before() {
-        ThreadLocalContext.removeTimezone();
-    }
+    private final TimeZone defaultTimeZone = TimeZone.getDefault();
 
     @AfterEach
-    public void after() {
+    public void rollbackTimeZone() {
+        TimeZone.setDefault(defaultTimeZone);
         ThreadLocalContext.removeTimezone();
     }
 
diff --git 
a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/JSONUtilsTest.java
 
b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/JSONUtilsTest.java
index d9c1024ba8..f70ca9d284 100644
--- 
a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/JSONUtilsTest.java
+++ 
b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/JSONUtilsTest.java
@@ -29,6 +29,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.TimeZone;
 
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
@@ -41,6 +42,14 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
 
 public class JSONUtilsTest {
 
+    private final TimeZone defaultTimeZone = TimeZone.getDefault();
+
+    @AfterEach
+    public void rollbackTimeZone() {
+        TimeZone.setDefault(defaultTimeZone);
+        JSONUtils.setTimeZone(defaultTimeZone);
+    }
+
     @Test
     public void createObjectNodeTest() {
         String jsonStr = "{\"a\":\"b\",\"b\":\"d\"}";
diff --git a/dolphinscheduler-e2e/pom.xml b/dolphinscheduler-e2e/pom.xml
index 6f63da0ea0..bce6e6d2f5 100644
--- a/dolphinscheduler-e2e/pom.xml
+++ b/dolphinscheduler-e2e/pom.xml
@@ -44,7 +44,7 @@
         <log4j-slf4j-impl.version>2.17.2</log4j-slf4j-impl.version>
         <guava.version>31.0.1-jre</guava.version>
         <maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version>
-        <testcontainers.version>1.19.8</testcontainers.version>
+        <testcontainers.version>1.21.4</testcontainers.version>
         <junit-pioneer.version>2.2.0</junit-pioneer.version>
     </properties>
 
diff --git 
a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/engine/executor/LogicTaskExecutorContainerProvider.java
 
b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/engine/executor/LogicTaskExecutorContainerProvider.java
index 709f9d61df..612c3ad68e 100644
--- 
a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/engine/executor/LogicTaskExecutorContainerProvider.java
+++ 
b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/engine/executor/LogicTaskExecutorContainerProvider.java
@@ -18,7 +18,6 @@
 package org.apache.dolphinscheduler.server.master.engine.executor;
 
 import org.apache.dolphinscheduler.server.master.config.MasterConfig;
-import 
org.apache.dolphinscheduler.task.executor.container.ITaskExecutorContainer;
 import 
org.apache.dolphinscheduler.task.executor.container.ITaskExecutorContainerProvider;
 import 
org.apache.dolphinscheduler.task.executor.container.SharedThreadTaskExecutorContainer;
 import 
org.apache.dolphinscheduler.task.executor.container.TaskExecutorContainerConfig;
@@ -26,9 +25,11 @@ import 
org.apache.dolphinscheduler.task.executor.container.TaskExecutorContainer
 import org.springframework.stereotype.Component;
 
 @Component
-public class LogicTaskExecutorContainerProvider implements 
ITaskExecutorContainerProvider {
+public class LogicTaskExecutorContainerProvider
+        implements
+            ITaskExecutorContainerProvider<SharedThreadTaskExecutorContainer> {
 
-    private final ITaskExecutorContainer taskExecutorContainer;
+    private final SharedThreadTaskExecutorContainer taskExecutorContainer;
 
     public LogicTaskExecutorContainerProvider(final MasterConfig masterConfig) 
{
         final TaskExecutorContainerConfig containerConfig = 
TaskExecutorContainerConfig.builder()
@@ -39,7 +40,7 @@ public class LogicTaskExecutorContainerProvider implements 
ITaskExecutorContaine
     }
 
     @Override
-    public ITaskExecutorContainer getExecutorContainer() {
+    public SharedThreadTaskExecutorContainer getExecutorContainer() {
         return taskExecutorContainer;
     }
 }
diff --git 
a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/engine/task/dispatcher/WorkerGroupDispatcher.java
 
b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/engine/task/dispatcher/WorkerGroupDispatcher.java
index 38f5533ba7..51ccd2f9cf 100644
--- 
a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/engine/task/dispatcher/WorkerGroupDispatcher.java
+++ 
b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/engine/task/dispatcher/WorkerGroupDispatcher.java
@@ -34,6 +34,8 @@ import java.util.concurrent.atomic.AtomicBoolean;
 
 import lombok.extern.slf4j.Slf4j;
 
+import com.google.common.annotations.VisibleForTesting;
+
 /**
  * WorkerGroupTaskDispatcher is responsible for dispatching tasks from the 
task queue.
  * The main responsibilities include:
@@ -179,7 +181,13 @@ public class WorkerGroupDispatcher extends 
BaseDaemonThread {
         }
     }
 
-    int queueSize() {
+    @VisibleForTesting
+    public int dispatchEventCount() {
         return this.workerGroupEventBus.size();
     }
+
+    @VisibleForTesting
+    public int waitingDispatchTaskCount() {
+        return this.waitingDispatchTaskIds.size();
+    }
 }
diff --git 
a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/engine/task/dispatcher/WorkerGroupDispatcherCoordinator.java
 
b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/engine/task/dispatcher/WorkerGroupDispatcherCoordinator.java
index 086fc5359e..d0606da74f 100644
--- 
a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/engine/task/dispatcher/WorkerGroupDispatcherCoordinator.java
+++ 
b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/engine/task/dispatcher/WorkerGroupDispatcherCoordinator.java
@@ -21,6 +21,7 @@ import 
org.apache.dolphinscheduler.server.master.config.MasterConfig;
 import 
org.apache.dolphinscheduler.server.master.engine.task.client.ITaskExecutorClient;
 import 
org.apache.dolphinscheduler.server.master.engine.task.runnable.ITaskExecutionRunnable;
 
+import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
 import lombok.extern.slf4j.Slf4j;
@@ -28,6 +29,8 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import com.google.common.annotations.VisibleForTesting;
+
 /**
  * WorkerGroupTaskDispatcherManager is responsible for managing the task 
dispatching for worker groups.
  * It maintains a mapping of worker groups to their task dispatchers and 
priority delay queues,
@@ -40,12 +43,12 @@ public class WorkerGroupDispatcherCoordinator implements 
AutoCloseable {
     @Autowired
     private ITaskExecutorClient taskExecutorClient;
 
-    private final ConcurrentHashMap<String, WorkerGroupDispatcher> 
workerGroupDispatcherMap;
+    private final Map<String, WorkerGroupDispatcher> workerGroupDispatchers;
 
     private final MasterConfig masterConfig;
 
     public WorkerGroupDispatcherCoordinator(final MasterConfig masterConfig) {
-        workerGroupDispatcherMap = new ConcurrentHashMap<>();
+        workerGroupDispatchers = new ConcurrentHashMap<>();
         this.masterConfig = masterConfig;
     }
 
@@ -82,7 +85,12 @@ public class WorkerGroupDispatcherCoordinator implements 
AutoCloseable {
     }
 
     public boolean existWorkerGroup(String workerGroup) {
-        return workerGroupDispatcherMap.containsKey(workerGroup);
+        return workerGroupDispatchers.containsKey(workerGroup);
+    }
+
+    @VisibleForTesting
+    public Map<String, WorkerGroupDispatcher> workerGroupDispatchers() {
+        return workerGroupDispatchers;
     }
 
     /**
@@ -91,7 +99,7 @@ public class WorkerGroupDispatcherCoordinator implements 
AutoCloseable {
     @Override
     public void close() throws Exception {
         log.info("WorkerGroupDispatcherCoordinator closing");
-        for (WorkerGroupDispatcher workerGroupDispatcher : 
workerGroupDispatcherMap.values()) {
+        for (WorkerGroupDispatcher workerGroupDispatcher : 
workerGroupDispatchers.values()) {
             try {
                 workerGroupDispatcher.close();
             } catch (Exception e) {
@@ -102,7 +110,7 @@ public class WorkerGroupDispatcherCoordinator implements 
AutoCloseable {
     }
 
     private WorkerGroupDispatcher getOrCreateWorkerGroupDispatcher(String 
workerGroup) {
-        return workerGroupDispatcherMap.computeIfAbsent(workerGroup, wg -> {
+        return workerGroupDispatchers.computeIfAbsent(workerGroup, wg -> {
             WorkerGroupDispatcher workerGroupDispatcher =
                     new WorkerGroupDispatcher(wg, taskExecutorClient, 
masterConfig.getTaskDispatchPolicy());
             workerGroupDispatcher.start();
diff --git 
a/dolphinscheduler-master/src/test/java/org/apache/dolphinscheduler/server/master/engine/task/dispatcher/WorkerGroupDispatcherTest.java
 
b/dolphinscheduler-master/src/test/java/org/apache/dolphinscheduler/server/master/engine/task/dispatcher/WorkerGroupDispatcherTest.java
index 210f7c21c9..e423d8e5ec 100644
--- 
a/dolphinscheduler-master/src/test/java/org/apache/dolphinscheduler/server/master/engine/task/dispatcher/WorkerGroupDispatcherTest.java
+++ 
b/dolphinscheduler-master/src/test/java/org/apache/dolphinscheduler/server/master/engine/task/dispatcher/WorkerGroupDispatcherTest.java
@@ -34,7 +34,6 @@ import static org.mockito.Mockito.when;
 import org.apache.dolphinscheduler.dao.entity.TaskInstance;
 import org.apache.dolphinscheduler.dao.entity.WorkflowInstance;
 import org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContext;
-import org.apache.dolphinscheduler.server.master.config.MasterConfig;
 import org.apache.dolphinscheduler.server.master.config.TaskDispatchPolicy;
 import org.apache.dolphinscheduler.server.master.engine.WorkflowEventBus;
 import 
org.apache.dolphinscheduler.server.master.engine.task.client.ITaskExecutorClient;
@@ -49,6 +48,7 @@ import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ThreadLocalRandom;
 import java.util.concurrent.TimeUnit;
 
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.mockito.InOrder;
@@ -61,9 +61,14 @@ class WorkerGroupDispatcherTest {
     @BeforeEach
     void setUp() {
         taskExecutorClient = mock(ITaskExecutorClient.class);
-        final MasterConfig masterConfig = new MasterConfig();
         dispatcher =
-                new WorkerGroupDispatcher("TestGroup", taskExecutorClient, 
masterConfig.getTaskDispatchPolicy());
+                new WorkerGroupDispatcher("TestGroup", taskExecutorClient, new 
TaskDispatchPolicy());
+    }
+
+    @AfterEach
+    void tearDown() {
+        dispatcher.close();
+        dispatcher.interrupt();
     }
 
     @Test
diff --git 
a/dolphinscheduler-master/src/test/java/org/apache/dolphinscheduler/server/master/integration/MasterContainer.java
 
b/dolphinscheduler-master/src/test/java/org/apache/dolphinscheduler/server/master/integration/MasterContainer.java
index bbe3af3f12..cd5c9ee8bd 100644
--- 
a/dolphinscheduler-master/src/test/java/org/apache/dolphinscheduler/server/master/integration/MasterContainer.java
+++ 
b/dolphinscheduler-master/src/test/java/org/apache/dolphinscheduler/server/master/integration/MasterContainer.java
@@ -27,9 +27,9 @@ import 
org.apache.dolphinscheduler.server.master.engine.executor.LogicTaskExecut
 import 
org.apache.dolphinscheduler.server.master.engine.executor.LogicTaskExecutorLifecycleEventReporter;
 import 
org.apache.dolphinscheduler.server.master.engine.executor.LogicTaskExecutorRepository;
 import org.apache.dolphinscheduler.server.master.engine.system.SystemEventBus;
-import 
org.apache.dolphinscheduler.task.executor.container.AbstractTaskExecutorContainer;
+import 
org.apache.dolphinscheduler.server.master.engine.task.dispatcher.WorkerGroupDispatcherCoordinator;
+import 
org.apache.dolphinscheduler.task.executor.container.SharedThreadTaskExecutorContainer;
 import 
org.apache.dolphinscheduler.task.executor.container.TaskExecutorAssignmentTable;
-import org.apache.dolphinscheduler.task.executor.worker.TaskExecutorWorkers;
 
 import java.util.concurrent.TimeUnit;
 
@@ -57,6 +57,9 @@ public class MasterContainer {
     @Autowired
     private LogicTaskExecutorLifecycleEventReporter 
logicTaskExecutorLifecycleEventReporter;
 
+    @Autowired
+    private WorkerGroupDispatcherCoordinator workerGroupDispatcherCoordinator;
+
     public void assertAllResourceReleased() {
         await()
                 .atMost(10, TimeUnit.SECONDS)
@@ -64,24 +67,49 @@ public class MasterContainer {
     }
 
     private void doAssertAllResourceReleased() {
+        assertWorkflowReleased();
+        assertWorkflowEventBusReleased();
+
+        assertSystemEventBusReleased();
+
+        assertLogicTaskEngineReleased();
+
+        assertWorkerGroupDispatcherReleased();
+    }
+
+    private void assertWorkflowReleased() {
         assertThat(workflowRepository.getAll()).isEmpty();
+        assertThat(workflowEventBusFireWorkers.getWorkers())
+                .allMatch(worker -> 
worker.getRegisteredWorkflowExecuteRunnableSize() == 0);
+    }
 
+    private void assertWorkflowEventBusReleased() {
         assertThat(workflowEventBusFireWorkers.getWorkers())
-                .allMatch(workflowEventBusFireWorker -> 
workflowEventBusFireWorker
-                        .getRegisteredWorkflowExecuteRunnableSize() == 0);
+                .allMatch(worker -> 
worker.getRegisteredWorkflowExecuteRunnableSize() == 0);
+    }
+
+    private void assertSystemEventBusReleased() {
         assertThat(systemEventBus).matches(AbstractDelayEventBus::isEmpty);
+    }
 
+    private void assertLogicTaskEngineReleased() {
         assertThat(logicTaskExecutorRepository.getAll()).isEmpty();
 
-        final AbstractTaskExecutorContainer executorContainer =
-                (AbstractTaskExecutorContainer) 
logicTaskExecutorContainerProvider.getExecutorContainer();
+        final SharedThreadTaskExecutorContainer executorContainer =
+                logicTaskExecutorContainerProvider.getExecutorContainer();
         
assertThat(executorContainer.getTaskExecutorAssignmentTable()).matches(TaskExecutorAssignmentTable::isEmpty);
 
-        final TaskExecutorWorkers taskExecutorWorkers = 
executorContainer.getTaskExecutorWorkers();
-        assertThat(taskExecutorWorkers.getWorkers())
+        assertThat(executorContainer.getTaskExecutorWorkers().getWorkers())
                 .allMatch(taskExecutorWorker -> 
taskExecutorWorker.getRegisteredTaskExecutorSize() == 0)
                 .allMatch(taskExecutorWorker -> 
taskExecutorWorker.getFiredTaskExecutorSize() == 0);
 
         
assertThat(logicTaskExecutorLifecycleEventReporter.getEventChannels()).isEmpty();
     }
+
+    private void assertWorkerGroupDispatcherReleased() {
+        
assertThat(workerGroupDispatcherCoordinator.workerGroupDispatchers().values())
+                .allMatch(dispatcher -> dispatcher.dispatchEventCount() == 0)
+                .allMatch(dispatcher -> dispatcher.waitingDispatchTaskCount() 
== 0);
+    }
+
 }
diff --git 
a/dolphinscheduler-master/src/test/java/org/apache/dolphinscheduler/server/master/integration/cases/WorkflowSchedulingTestCase.java
 
b/dolphinscheduler-master/src/test/java/org/apache/dolphinscheduler/server/master/integration/cases/WorkflowSchedulingTestCase.java
index 4283b8a647..c55d812ebb 100644
--- 
a/dolphinscheduler-master/src/test/java/org/apache/dolphinscheduler/server/master/integration/cases/WorkflowSchedulingTestCase.java
+++ 
b/dolphinscheduler-master/src/test/java/org/apache/dolphinscheduler/server/master/integration/cases/WorkflowSchedulingTestCase.java
@@ -39,6 +39,8 @@ import org.apache.commons.lang3.time.DateUtils;
 import java.time.Duration;
 import java.util.Date;
 
+import lombok.extern.slf4j.Slf4j;
+
 import org.assertj.core.api.Condition;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Test;
@@ -47,6 +49,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 /**
  * The integration test for scheduling a workflow from workflow definition.
  */
+@Slf4j
 public class WorkflowSchedulingTestCase extends 
AbstractMasterIntegrationTestCase {
 
     @Autowired
diff --git a/dolphinscheduler-master/src/test/resources/logback.xml 
b/dolphinscheduler-master/src/test/resources/logback.xml
index 799791fd20..1490f5b556 100644
--- a/dolphinscheduler-master/src/test/resources/logback.xml
+++ b/dolphinscheduler-master/src/test/resources/logback.xml
@@ -68,8 +68,7 @@
         </encoder>
     </appender>
 
-    <!-- We use OFF here to avoid too many exception log in CI   -->
-    <root level="OFF">
+    <root level="WARN">
         <appender-ref ref="STDOUT"/>
         <appender-ref ref="TASKLOGFILE"/>
         <appender-ref ref="MASTERLOGFILE"/>
diff --git 
a/dolphinscheduler-task-executor/src/main/java/org/apache/dolphinscheduler/task/executor/container/ITaskExecutorContainerProvider.java
 
b/dolphinscheduler-task-executor/src/main/java/org/apache/dolphinscheduler/task/executor/container/ITaskExecutorContainerProvider.java
index aa5233d6d7..7d83d336bd 100644
--- 
a/dolphinscheduler-task-executor/src/main/java/org/apache/dolphinscheduler/task/executor/container/ITaskExecutorContainerProvider.java
+++ 
b/dolphinscheduler-task-executor/src/main/java/org/apache/dolphinscheduler/task/executor/container/ITaskExecutorContainerProvider.java
@@ -17,8 +17,8 @@
 
 package org.apache.dolphinscheduler.task.executor.container;
 
-public interface ITaskExecutorContainerProvider {
+public interface ITaskExecutorContainerProvider<T extends 
ITaskExecutorContainer> {
 
-    ITaskExecutorContainer getExecutorContainer();
+    T getExecutorContainer();
 
 }
diff --git 
a/dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/executor/PhysicalTaskExecutorContainerProvider.java
 
b/dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/executor/PhysicalTaskExecutorContainerProvider.java
index 80a4e5c9f2..6d669d82dc 100644
--- 
a/dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/executor/PhysicalTaskExecutorContainerProvider.java
+++ 
b/dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/executor/PhysicalTaskExecutorContainerProvider.java
@@ -19,16 +19,17 @@ package org.apache.dolphinscheduler.server.worker.executor;
 
 import org.apache.dolphinscheduler.server.worker.config.WorkerConfig;
 import 
org.apache.dolphinscheduler.task.executor.container.ExclusiveThreadTaskExecutorContainer;
-import 
org.apache.dolphinscheduler.task.executor.container.ITaskExecutorContainer;
 import 
org.apache.dolphinscheduler.task.executor.container.ITaskExecutorContainerProvider;
 import 
org.apache.dolphinscheduler.task.executor.container.TaskExecutorContainerConfig;
 
 import org.springframework.stereotype.Component;
 
 @Component
-public class PhysicalTaskExecutorContainerProvider implements 
ITaskExecutorContainerProvider {
+public class PhysicalTaskExecutorContainerProvider
+        implements
+            
ITaskExecutorContainerProvider<ExclusiveThreadTaskExecutorContainer> {
 
-    private final ITaskExecutorContainer taskExecutorContainer;
+    private final ExclusiveThreadTaskExecutorContainer taskExecutorContainer;
 
     public PhysicalTaskExecutorContainerProvider(final WorkerConfig 
workerConfig) {
         final TaskExecutorContainerConfig containerConfig = 
TaskExecutorContainerConfig.builder()
@@ -39,7 +40,7 @@ public class PhysicalTaskExecutorContainerProvider implements 
ITaskExecutorConta
     }
 
     @Override
-    public ITaskExecutorContainer getExecutorContainer() {
+    public ExclusiveThreadTaskExecutorContainer getExecutorContainer() {
         return taskExecutorContainer;
     }
 }
diff --git a/pom.xml b/pom.xml
index 83ff608d79..452a45bcff 100755
--- a/pom.xml
+++ b/pom.xml
@@ -607,6 +607,7 @@
                 <version>${maven-surefire-plugin.version}</version>
                 <configuration>
                     <skip>${skipUT}</skip>
+                    <skipAfterFailureCount>1</skipAfterFailureCount>
                     <systemPropertyVariables>
                         
<jacoco-agent.destfile>${project.build.directory}/jacoco.exec</jacoco-agent.destfile>
                     </systemPropertyVariables>

Reply via email to