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 a8bc23748d Fix write audit log error will cause the request failed 
(#15868)
a8bc23748d is described below

commit a8bc23748d7e4371e962c095d40e06ce88fdf497
Author: Wenjun Ruan <[email protected]>
AuthorDate: Thu Apr 18 11:31:11 2024 +0800

    Fix write audit log error will cause the request failed (#15868)
---
 .../api/audit/OperatorLogAspect.java               | 16 +++++++++++--
 .../dolphinscheduler/api/audit/OperatorUtils.java  |  1 -
 .../api/audit/operator/AuditOperator.java          | 13 ++++++++---
 .../api/audit/operator/BaseAuditOperator.java      | 26 +++++++++++-----------
 .../dolphinscheduler/api/service/AuditService.java | 10 ---------
 .../api/service/impl/AuditServiceImpl.java         |  8 -------
 6 files changed, 37 insertions(+), 37 deletions(-)

diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/audit/OperatorLogAspect.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/audit/OperatorLogAspect.java
index 4e15112980..da8a7bd3e6 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/audit/OperatorLogAspect.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/audit/OperatorLogAspect.java
@@ -18,9 +18,11 @@
 package org.apache.dolphinscheduler.api.audit;
 
 import org.apache.dolphinscheduler.api.audit.operator.AuditOperator;
+import org.apache.dolphinscheduler.api.utils.Result;
 import org.apache.dolphinscheduler.service.bean.SpringApplicationContext;
 
 import java.lang.reflect.Method;
+import java.util.Map;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -54,8 +56,18 @@ public class OperatorLogAspect {
             log.warn("Operation is null of method: {}", method.getName());
             return point.proceed();
         }
+        long beginTime = System.currentTimeMillis();
 
-        AuditOperator operator = 
SpringApplicationContext.getBean(operatorLog.auditType().getOperatorClass());
-        return operator.recordAudit(point, operation.description(), 
operatorLog.auditType());
+        Map<String, Object> paramsMap = OperatorUtils.getParamsMap(point, 
signature);
+        Result<?> result = (Result<?>) point.proceed();
+        try {
+            AuditOperator operator = 
SpringApplicationContext.getBean(operatorLog.auditType().getOperatorClass());
+            long latency = System.currentTimeMillis() - beginTime;
+            operator.recordAudit(paramsMap, result, latency, operation, 
operatorLog);
+        } catch (Throwable throwable) {
+            log.error("Record audit log error", throwable);
+        }
+
+        return result;
     }
 }
diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/audit/OperatorUtils.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/audit/OperatorUtils.java
index a0233c7e93..10ccf8d648 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/audit/OperatorUtils.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/audit/OperatorUtils.java
@@ -66,7 +66,6 @@ public class OperatorUtils {
         auditLog.setOperationType(auditType.getAuditOperationType().getName());
         auditLog.setDescription(apiDescription);
         auditLog.setCreateTime(new Date());
-        auditLogList.add(auditLog);
 
         return auditLogList;
     }
diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/audit/operator/AuditOperator.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/audit/operator/AuditOperator.java
index 6e1c016313..7d76d5c4bd 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/audit/operator/AuditOperator.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/audit/operator/AuditOperator.java
@@ -17,11 +17,18 @@
 
 package org.apache.dolphinscheduler.api.audit.operator;
 
-import org.apache.dolphinscheduler.api.audit.enums.AuditType;
+import org.apache.dolphinscheduler.api.audit.OperatorLog;
+import org.apache.dolphinscheduler.api.utils.Result;
 
-import org.aspectj.lang.ProceedingJoinPoint;
+import java.util.Map;
+
+import io.swagger.v3.oas.annotations.Operation;
 
 public interface AuditOperator {
 
-    Object recordAudit(ProceedingJoinPoint point, String describe, AuditType 
auditType) throws Throwable;
+    void recordAudit(Map<String, Object> paramsMap,
+                     Result<?> result,
+                     long latency,
+                     Operation operation,
+                     OperatorLog operatorLog) throws Throwable;
 }
diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/audit/operator/BaseAuditOperator.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/audit/operator/BaseAuditOperator.java
index 5c896a058a..270a5e4df4 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/audit/operator/BaseAuditOperator.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/audit/operator/BaseAuditOperator.java
@@ -17,6 +17,7 @@
 
 package org.apache.dolphinscheduler.api.audit.operator;
 
+import org.apache.dolphinscheduler.api.audit.OperatorLog;
 import org.apache.dolphinscheduler.api.audit.OperatorUtils;
 import org.apache.dolphinscheduler.api.audit.enums.AuditType;
 import org.apache.dolphinscheduler.api.service.AuditService;
@@ -31,12 +32,11 @@ import java.util.Map;
 
 import lombok.extern.slf4j.Slf4j;
 
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.aspectj.lang.reflect.MethodSignature;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.google.common.base.Strings;
+import io.swagger.v3.oas.annotations.Operation;
 
 @Service
 @Slf4j
@@ -46,26 +46,27 @@ public abstract class BaseAuditOperator implements 
AuditOperator {
     private AuditService auditService;
 
     @Override
-    public Object recordAudit(ProceedingJoinPoint point, String describe, 
AuditType auditType) throws Throwable {
-        long beginTime = System.currentTimeMillis();
+    public void recordAudit(Map<String, Object> paramsMap,
+                            Result<?> result,
+                            long latency,
+                            Operation operation,
+                            OperatorLog operatorLog) {
 
-        MethodSignature signature = (MethodSignature) point.getSignature();
-        Map<String, Object> paramsMap = OperatorUtils.getParamsMap(point, 
signature);
+        AuditType auditType = operatorLog.auditType();
 
         User user = OperatorUtils.getUser(paramsMap);
 
         if (user == null) {
             log.error("user is null");
-            return point.proceed();
+            return;
         }
 
-        List<AuditLog> auditLogList = 
OperatorUtils.buildAuditLogList(describe, auditType, user);
+        List<AuditLog> auditLogList = 
OperatorUtils.buildAuditLogList(operation.description(), auditType, user);
         setRequestParam(auditType, auditLogList, paramsMap);
 
-        Result<?> result = (Result<?>) point.proceed();
         if (OperatorUtils.resultFail(result)) {
             log.error("request fail, code {}", result.getCode());
-            return result;
+            return;
         }
 
         setObjectIdentityFromReturnObject(auditType, result, auditLogList);
@@ -73,10 +74,9 @@ public abstract class BaseAuditOperator implements 
AuditOperator {
         modifyAuditOperationType(auditType, paramsMap, auditLogList);
         modifyAuditObjectType(auditType, paramsMap, auditLogList);
 
-        long latency = System.currentTimeMillis() - beginTime;
-        auditService.addAudit(auditLogList, latency);
+        auditLogList.forEach(auditLog -> auditLog.setLatency(latency));
+        auditLogList.forEach(auditLog -> auditService.addAudit(auditLog));
 
-        return result;
     }
 
     protected void setRequestParam(AuditType auditType, List<AuditLog> 
auditLogList, Map<String, Object> paramsMap) {
diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/AuditService.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/AuditService.java
index b4296452f6..8fb99eaf73 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/AuditService.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/AuditService.java
@@ -21,8 +21,6 @@ import org.apache.dolphinscheduler.api.dto.AuditDto;
 import org.apache.dolphinscheduler.api.utils.PageInfo;
 import org.apache.dolphinscheduler.dao.entity.AuditLog;
 
-import java.util.List;
-
 /**
  * audit information service
  */
@@ -35,14 +33,6 @@ public interface AuditService {
      */
     void addAudit(AuditLog auditLog);
 
-    /**
-     * add audit by list
-     *
-     * @param auditLogList         auditLog list
-     * @param latency             api latency milliseconds
-     */
-    void addAudit(List<AuditLog> auditLogList, long latency);
-
     /**
      * query audit log list
      *
diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AuditServiceImpl.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AuditServiceImpl.java
index 2ec547bcb6..f8f763b4f4 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AuditServiceImpl.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AuditServiceImpl.java
@@ -57,14 +57,6 @@ public class AuditServiceImpl extends BaseServiceImpl 
implements AuditService {
         auditLogMapper.insert(auditLog);
     }
 
-    @Override
-    public void addAudit(List<AuditLog> auditLogList, long latency) {
-        auditLogList.forEach(auditLog -> {
-            auditLog.setLatency(latency);
-            addAudit(auditLog);
-        });
-    }
-
     /**
      * query audit log paging
      *

Reply via email to