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 01f4fb26f0 Change remove task instance log to async request (#13399)
01f4fb26f0 is described below

commit 01f4fb26f03fe1d05fa5ddee2057f0d05a813a88
Author: Wenjun Ruan <[email protected]>
AuthorDate: Mon Jan 16 15:49:23 2023 +0800

    Change remove task instance log to async request (#13399)
---
 .../api/service/impl/TaskInstanceServiceImpl.java  |  8 +----
 .../dolphinscheduler/service/log/LogClient.java    | 39 +++++++++++++---------
 .../service/process/ProcessServiceImpl.java        | 13 ++------
 .../service/log/LogClientTest.java                 | 11 ++----
 4 files changed, 29 insertions(+), 42 deletions(-)

diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskInstanceServiceImpl.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskInstanceServiceImpl.java
index 0d74489f4b..5738d29555 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskInstanceServiceImpl.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskInstanceServiceImpl.java
@@ -379,13 +379,7 @@ public class TaskInstanceServiceImpl extends 
BaseServiceImpl implements TaskInst
         for (TaskInstance taskInstance : needToDeleteTaskInstances) {
             // delete log
             if (StringUtils.isNotEmpty(taskInstance.getLogPath())) {
-                try {
-                    logClient.removeTaskLog(Host.of(taskInstance.getHost()), 
taskInstance.getLogPath());
-                } catch (Exception e) {
-                    logger.error(
-                            "Remove task log error, meet an unknown exception, 
taskInstanceId: {}, host: {}, logPath: {}",
-                            taskInstance.getId(), taskInstance.getHost(), 
taskInstance.getLogPath(), e);
-                }
+                logClient.removeTaskLog(Host.of(taskInstance.getHost()), 
taskInstance.getLogPath());
             }
         }
 
diff --git 
a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/log/LogClient.java
 
b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/log/LogClient.java
index f1f1e54a5f..114f5c1640 100644
--- 
a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/log/LogClient.java
+++ 
b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/log/LogClient.java
@@ -177,29 +177,38 @@ public class LogClient implements AutoCloseable {
      *
      * @param host host
      * @param path path
-     * @return remove task status
      */
-    public Boolean removeTaskLog(@NonNull Host host, String path) {
-        logger.info("Remove task log from host: {} logPath {}", host, path);
+    public void removeTaskLog(@NonNull Host host, String path) {
+        logger.info("Begin remove task log from host: {} logPath {}", host, 
path);
         RemoveTaskLogRequestCommand request = new 
RemoveTaskLogRequestCommand(path);
         try {
             Command command = request.convert2Command();
-            Command response = this.client.sendSync(host, command, 
LOG_REQUEST_TIMEOUT);
-            if (response != null) {
-                RemoveTaskLogResponseCommand taskLogResponse =
+            client.sendAsync(host, command, LOG_REQUEST_TIMEOUT, 
responseFuture -> {
+                if (responseFuture.getCause() != null) {
+                    logger.error("Remove task log from host: {} logPath {} 
error, meet an unknown exception", host,
+                            path, responseFuture.getCause());
+                    return;
+                }
+                Command response = responseFuture.getResponseCommand();
+                if (response == null) {
+                    logger.error("Remove task log from host: {} logPath {} 
error, response is null", host, path);
+                    return;
+                }
+                RemoveTaskLogResponseCommand removeTaskLogResponse =
                         JSONUtils.parseObject(response.getBody(), 
RemoveTaskLogResponseCommand.class);
-                return taskLogResponse.getStatus();
-            }
-            return false;
-        } catch (InterruptedException ex) {
+                if (removeTaskLogResponse.getStatus()) {
+                    logger.info("Success remove task log from host: {} logPath 
{}", host, path);
+                } else {
+                    logger.error("Remove task log from host: {} logPath {} 
error", host, path);
+                }
+            });
+        } catch (InterruptedException interruptedException) {
             Thread.currentThread().interrupt();
-            logger.error(
-                    "Remove task log from host: {}, logPath: {} error, the 
current thread has been interrupted",
-                    host, path, ex);
-            return false;
+            logger.error("Remove task log from host: {} logPath {} error, the 
current thread has been interrupted",
+                    host,
+                    path, interruptedException);
         } catch (Exception e) {
             logger.error("Remove task log from host: {},  logPath: {} error", 
host, path, e);
-            return false;
         }
     }
 
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 359a36cde5..ce8360ad64 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
@@ -516,17 +516,10 @@ public class ProcessServiceImpl implements ProcessService 
{
         }
         for (TaskInstance taskInstance : taskInstanceList) {
             String taskLogPath = taskInstance.getLogPath();
-            if (Strings.isNullOrEmpty(taskInstance.getHost())) {
+            if (StringUtils.isEmpty(taskInstance.getHost()) || 
StringUtils.isEmpty(taskLogPath)) {
                 continue;
             }
-            try {
-                Host host = Host.of(taskInstance.getHost());
-                logClient.removeTaskLog(host, taskLogPath);
-            } catch (Exception e) {
-                logger.error(
-                        "Remove task log error, meet an unknown exception, 
taskInstanceId: {}, host: {}, logPath: {}",
-                        taskInstance.getId(), taskInstance.getHost(), 
taskInstance.getLogPath(), e);
-            }
+            logClient.removeTaskLog(Host.of(taskInstance.getHost()), 
taskLogPath);
         }
     }
 
@@ -2429,8 +2422,6 @@ public class ProcessServiceImpl implements ProcessService 
{
 
     /**
      * the first time (when submit the task ) get the resource of the task 
group
-     *
-     * @param taskId task id
      */
     @Override
     public boolean acquireTaskGroup(int taskInstanceId,
diff --git 
a/dolphinscheduler-service/src/test/java/org/apache/dolphinscheduler/service/log/LogClientTest.java
 
b/dolphinscheduler-service/src/test/java/org/apache/dolphinscheduler/service/log/LogClientTest.java
index faaad4fd7e..3864816f67 100644
--- 
a/dolphinscheduler-service/src/test/java/org/apache/dolphinscheduler/service/log/LogClientTest.java
+++ 
b/dolphinscheduler-service/src/test/java/org/apache/dolphinscheduler/service/log/LogClientTest.java
@@ -22,7 +22,6 @@ import org.apache.dolphinscheduler.common.utils.NetUtils;
 import org.apache.dolphinscheduler.remote.NettyRemotingClient;
 import org.apache.dolphinscheduler.remote.command.Command;
 import 
org.apache.dolphinscheduler.remote.command.log.GetLogBytesResponseCommand;
-import 
org.apache.dolphinscheduler.remote.command.log.RemoveTaskLogResponseCommand;
 import 
org.apache.dolphinscheduler.remote.command.log.RollViewLogResponseCommand;
 import org.apache.dolphinscheduler.remote.command.log.ViewLogResponseCommand;
 import org.apache.dolphinscheduler.remote.factory.NettyRemotingClientFactory;
@@ -136,7 +135,7 @@ public class LogClientTest {
     }
 
     @Test
-    public void testRemoveTaskLog() throws Exception {
+    public void testRemoveTaskLog() {
 
         try (
                 MockedStatic<NettyRemotingClientFactory> 
mockedNettyRemotingClientFactory =
@@ -144,15 +143,9 @@ public class LogClientTest {
             NettyRemotingClient remotingClient = 
Mockito.mock(NettyRemotingClient.class);
             
mockedNettyRemotingClientFactory.when(NettyRemotingClientFactory::buildNettyRemotingClient)
                     .thenReturn(remotingClient);
-            Command command = new Command();
-            command.setBody(JSONUtils.toJsonByteArray(new 
RemoveTaskLogResponseCommand(true)));
-            Mockito.when(
-                    remotingClient.sendSync(Mockito.any(Host.class), 
Mockito.any(Command.class), Mockito.anyLong()))
-                    .thenReturn(command);
 
             LogClient logClient = new LogClient();
-            Boolean status = 
logClient.removeTaskLog(Host.of("localhost:1234"), "/log/path");
-            Assertions.assertTrue(status);
+            Assertions.assertDoesNotThrow(() -> 
logClient.removeTaskLog(Host.of("localhost:1234"), "/log/path"));
         }
     }
 }

Reply via email to