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

doleyzi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong.git


The following commit(s) were added to refs/heads/master by this push:
     new 7a1c89769c [INLONG-11404][Audit] Optimize the Audit item in dashboard 
display (#11405)
7a1c89769c is described below

commit 7a1c89769c5fcce9f7380d95b5c39c1e10829431
Author: doleyzi <43397300+dole...@users.noreply.github.com>
AuthorDate: Thu Oct 24 18:53:43 2024 +0800

    [INLONG-11404][Audit] Optimize the Audit item in dashboard display (#11405)
---
 .../inlong/audit/util/AuditManagerUtils.java       | 57 ++++++++++++++++++++--
 1 file changed, 53 insertions(+), 4 deletions(-)

diff --git 
a/inlong-audit/audit-sdk/src/main/java/org/apache/inlong/audit/util/AuditManagerUtils.java
 
b/inlong-audit/audit-sdk/src/main/java/org/apache/inlong/audit/util/AuditManagerUtils.java
index e8802b593d..f470251b0e 100644
--- 
a/inlong-audit/audit-sdk/src/main/java/org/apache/inlong/audit/util/AuditManagerUtils.java
+++ 
b/inlong-audit/audit-sdk/src/main/java/org/apache/inlong/audit/util/AuditManagerUtils.java
@@ -28,6 +28,8 @@ import org.slf4j.LoggerFactory;
 import java.util.LinkedList;
 import java.util.List;
 
+import static org.apache.inlong.audit.AuditIdEnum.*;
+
 /**
  * Audit item ID generation rules: composed of basic audit item ID + extension 
bits.
  * Each module is assigned two basic audit item IDs, namely reception and 
transmission.
@@ -169,22 +171,69 @@ public class AuditManagerUtils {
     private static List<AuditInformation> combineAuditInformation(String 
auditType, FlowType flowType) {
         List<AuditInformation> auditInformationList = new LinkedList<>();
         boolean[] combinations = {true, false};
+
         for (boolean success : combinations) {
             for (boolean isRealtime : combinations) {
                 for (boolean discard : combinations) {
                     for (boolean retry : combinations) {
-                        if (discard && retry) {
-                            continue;
+                        if (shouldIncludeCombination(auditType, flowType, 
success, isRealtime, discard, retry)) {
+                            auditInformationList.add(
+                                    buildAuditInformation(auditType, flowType, 
success, isRealtime, discard, retry));
                         }
-                        auditInformationList
-                                .add(buildAuditInformation(auditType, 
flowType, success, isRealtime, discard, retry));
                     }
                 }
             }
         }
+
         return auditInformationList;
     }
 
+    /**
+     * Exclude some uncommon audit scenarios
+     * @param auditType
+     * @param flowType
+     * @param success
+     * @param isRealtime
+     * @param discard
+     * @param retry
+     * @return
+     */
+    private static boolean shouldIncludeCombination(String auditType, FlowType 
flowType, boolean success,
+            boolean isRealtime, boolean discard, boolean retry) {
+        // Exclude the situation when retry and discard occur at the same time
+        if (discard && retry) {
+            return false;
+        }
+
+        AuditIdEnum baseAuditId = AuditIdEnum.getAuditId(auditType, flowType);
+        // Exclude the situation when non-real-time and one of 
SDK、Agent、DataProxy occur at the same time
+        if (!isRealtime && isExcludedWhenNotRealtime(baseAuditId)) {
+            return false;
+        }
+
+        // Exclude the situation when failed、input and one of discard and 
retry occur at the same time
+        if (!success && flowType == FlowType.INPUT && (discard || retry)) {
+            return false;
+        }
+
+        // Exclude the situation when failed、output and discard occur at the 
same time
+        if (!success && flowType == FlowType.OUTPUT && discard) {
+            return false;
+        }
+
+        // Exclude the situation when success、input and retry occur at the 
same time
+        if (success && flowType == FlowType.INPUT && retry) {
+            return false;
+        }
+
+        return true;
+    }
+
+    private static boolean isExcludedWhenNotRealtime(AuditIdEnum baseAuditId) {
+        return baseAuditId == SDK_INPUT || baseAuditId == SDK_OUTPUT || 
baseAuditId == AGENT_INPUT
+                || baseAuditId == AGENT_OUTPUT || baseAuditId == 
DATA_PROXY_INPUT || baseAuditId == DATA_PROXY_OUTPUT;
+    }
+
     /**
      * Get max Audit ID.
      *

Reply via email to