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 63a2197cb1 [INLONG-12060][Audit] Optimize audit route management
(#12061)
63a2197cb1 is described below
commit 63a2197cb17d29f6473c53e4d01002148aee7b18
Author: doleyzi <[email protected]>
AuthorDate: Wed Dec 31 17:23:05 2025 +0800
[INLONG-12060][Audit] Optimize audit route management (#12061)
Co-authored-by: doleyzi <[email protected]>
---
.../src/main/java/org/apache/inlong/audit/entity/AuditRoute.java | 1 +
.../main/java/org/apache/inlong/audit/file/ConfigManager.java | 4 ++++
.../org/apache/inlong/audit/service/cache/AuditRouteCache.java | 6 ++++++
.../org/apache/inlong/audit/service/config/SqlConstants.java | 2 +-
.../org/apache/inlong/audit/store/config/ConfigConstants.java | 3 +++
.../org/apache/inlong/audit/store/route/AuditRouteManager.java | 9 +++++++++
.../java/org/apache/inlong/audit/store/service/JdbcService.java | 2 +-
inlong-audit/sql/apache_inlong_audit_mysql.sql | 1 +
8 files changed, 26 insertions(+), 2 deletions(-)
diff --git
a/inlong-audit/audit-common/src/main/java/org/apache/inlong/audit/entity/AuditRoute.java
b/inlong-audit/audit-common/src/main/java/org/apache/inlong/audit/entity/AuditRoute.java
index 8484e345bb..cc886a7462 100644
---
a/inlong-audit/audit-common/src/main/java/org/apache/inlong/audit/entity/AuditRoute.java
+++
b/inlong-audit/audit-common/src/main/java/org/apache/inlong/audit/entity/AuditRoute.java
@@ -30,4 +30,5 @@ public class AuditRoute {
private String auditId;
private String inlongGroupIdsInclude;
private String inlongGroupIdsExclude;
+ private int priority;
}
diff --git
a/inlong-audit/audit-common/src/main/java/org/apache/inlong/audit/file/ConfigManager.java
b/inlong-audit/audit-common/src/main/java/org/apache/inlong/audit/file/ConfigManager.java
index 62a2f551ca..585c2a7f96 100644
---
a/inlong-audit/audit-common/src/main/java/org/apache/inlong/audit/file/ConfigManager.java
+++
b/inlong-audit/audit-common/src/main/java/org/apache/inlong/audit/file/ConfigManager.java
@@ -119,6 +119,10 @@ public class ConfigManager {
return getValue(key, defaultValue, Integer::parseInt);
}
+ public boolean getValue(String key, boolean defaultValue) {
+ return getValue(key, defaultValue, Boolean::parseBoolean);
+ }
+
private boolean updatePropertiesHolder(Map<String, String> result,
String holderName, boolean addElseRemove) {
if (StringUtils.isNotEmpty(holderName)) {
diff --git
a/inlong-audit/audit-service/src/main/java/org/apache/inlong/audit/service/cache/AuditRouteCache.java
b/inlong-audit/audit-service/src/main/java/org/apache/inlong/audit/service/cache/AuditRouteCache.java
index 0a7d3cf061..3ef8f2b99c 100644
---
a/inlong-audit/audit-service/src/main/java/org/apache/inlong/audit/service/cache/AuditRouteCache.java
+++
b/inlong-audit/audit-service/src/main/java/org/apache/inlong/audit/service/cache/AuditRouteCache.java
@@ -53,6 +53,7 @@ public class AuditRouteCache {
private static final String AUDIT_ID_INCLUDE = "audit_id_include";
private static final String GROUP_ID_INCLUDE = "inlong_group_id_include";
private static final String GROUP_ID_EXCLUDE = "inlong_group_id_exclude";
+ private static final String PRIORITY = "priority";
@Getter
private static final AuditRouteCache instance = new AuditRouteCache();
@@ -115,6 +116,7 @@ public class AuditRouteCache {
String auditId =
StringUtils.trimToNull(resultSet.getString(AUDIT_ID_INCLUDE));
String includeGroupId =
StringUtils.trimToNull(resultSet.getString(GROUP_ID_INCLUDE));
String excludeGroupId =
StringUtils.trimToNull(resultSet.getString(GROUP_ID_EXCLUDE));
+ int priority = resultSet.getInt(PRIORITY);
if (!isValidRegexOrLog(auditId)
|| !isValidRegexOrLog(includeGroupId)
@@ -130,6 +132,7 @@ public class AuditRouteCache {
data.setAuditId(auditId);
data.setInlongGroupIdsInclude(includeGroupId);
data.setInlongGroupIdsExclude(excludeGroupId);
+ data.setPriority(priority);
auditRoutes.computeIfAbsent(address, key -> new
ArrayList<>()).add(data);
}
@@ -139,6 +142,9 @@ public class AuditRouteCache {
}
if (!auditRoutes.isEmpty()) {
+ auditRoutes.values()
+ .forEach(routes -> routes.sort((r1, r2) ->
Integer.compare(r2.getPriority(), r1.getPriority())));
+
auditRouteCache = auditRoutes;
LOGGER.info("AuditRouteCache update success. Cache size={}, Query
size={}", auditRouteCache.size(),
auditRoutes.size());
diff --git
a/inlong-audit/audit-service/src/main/java/org/apache/inlong/audit/service/config/SqlConstants.java
b/inlong-audit/audit-service/src/main/java/org/apache/inlong/audit/service/config/SqlConstants.java
index f35efe1695..d3dfbbe28f 100644
---
a/inlong-audit/audit-service/src/main/java/org/apache/inlong/audit/service/config/SqlConstants.java
+++
b/inlong-audit/audit-service/src/main/java/org/apache/inlong/audit/service/config/SqlConstants.java
@@ -255,5 +255,5 @@ public class SqlConstants {
public static final String KEY_QUERY_AUDIT_ROUTE_SQL =
"audit.query.route.sql";
public static final String DEFAULT_QUERY_AUDIT_ROUTE_SQL =
- "SELECT address, audit_id_include, inlong_group_id_include,
inlong_group_id_exclude FROM audit_route_config WHERE status=1";
+ "SELECT address, audit_id_include, inlong_group_id_include,
inlong_group_id_exclude, priority FROM audit_route_config WHERE status=1";
}
diff --git
a/inlong-audit/audit-store/src/main/java/org/apache/inlong/audit/store/config/ConfigConstants.java
b/inlong-audit/audit-store/src/main/java/org/apache/inlong/audit/store/config/ConfigConstants.java
index 711c65d6fd..4a0896ebec 100644
---
a/inlong-audit/audit-store/src/main/java/org/apache/inlong/audit/store/config/ConfigConstants.java
+++
b/inlong-audit/audit-store/src/main/java/org/apache/inlong/audit/store/config/ConfigConstants.java
@@ -35,4 +35,7 @@ public class ConfigConstants {
public static final int DEFAULT_AUDIT_SERVICE_TIMEOUT_MS = 30000;
public static final String KEY_AUDIT_SERVICE_ROUTE_API =
"audit.service.route.api";
public static final String DEFAULT_AUDIT_SERVICE_ROUTE_API =
"/audit/query/getAuditRoute";
+
+ public static final String KEY_AUDIT_STORE_ROUTE_ENABLED =
"audit.store.route.enabled";
+ public static final boolean DEFAULT_AUDIT_STORE_ROUTE_ENABLED = false;
}
diff --git
a/inlong-audit/audit-store/src/main/java/org/apache/inlong/audit/store/route/AuditRouteManager.java
b/inlong-audit/audit-store/src/main/java/org/apache/inlong/audit/store/route/AuditRouteManager.java
index d10c50b8c0..0b6deb249b 100644
---
a/inlong-audit/audit-store/src/main/java/org/apache/inlong/audit/store/route/AuditRouteManager.java
+++
b/inlong-audit/audit-store/src/main/java/org/apache/inlong/audit/store/route/AuditRouteManager.java
@@ -40,9 +40,11 @@ import java.util.concurrent.TimeUnit;
import static
org.apache.inlong.audit.store.config.ConfigConstants.DEFAULT_AUDIT_SERVICE_ADDR;
import static
org.apache.inlong.audit.store.config.ConfigConstants.DEFAULT_AUDIT_SERVICE_ROUTE_API;
import static
org.apache.inlong.audit.store.config.ConfigConstants.DEFAULT_AUDIT_SERVICE_TIMEOUT_MS;
+import static
org.apache.inlong.audit.store.config.ConfigConstants.DEFAULT_AUDIT_STORE_ROUTE_ENABLED;
import static
org.apache.inlong.audit.store.config.ConfigConstants.KEY_AUDIT_SERVICE_ADDR;
import static
org.apache.inlong.audit.store.config.ConfigConstants.KEY_AUDIT_SERVICE_ROUTE_API;
import static
org.apache.inlong.audit.store.config.ConfigConstants.KEY_AUDIT_SERVICE_TIMEOUT_MS;
+import static
org.apache.inlong.audit.store.config.ConfigConstants.KEY_AUDIT_STORE_ROUTE_ENABLED;
import static org.apache.inlong.audit.utils.RouteUtils.extractAddress;
public class AuditRouteManager {
@@ -68,6 +70,13 @@ public class AuditRouteManager {
}
public void init(String jdbcUrl) {
+ boolean routeEnabled =
+
ConfigManager.getInstance().getValue(KEY_AUDIT_STORE_ROUTE_ENABLED,
DEFAULT_AUDIT_STORE_ROUTE_ENABLED);
+ if (!routeEnabled) {
+ LOGGER.info("AuditRouteManager is disabled by configuration
({}=false)", KEY_AUDIT_STORE_ROUTE_ENABLED);
+ return;
+ }
+
String serviceAddr =
ConfigManager.getInstance().getValue(KEY_AUDIT_SERVICE_ADDR,
DEFAULT_AUDIT_SERVICE_ADDR);
String routeApi =
ConfigManager.getInstance().getValue(KEY_AUDIT_SERVICE_ROUTE_API,
DEFAULT_AUDIT_SERVICE_ROUTE_API);
diff --git
a/inlong-audit/audit-store/src/main/java/org/apache/inlong/audit/store/service/JdbcService.java
b/inlong-audit/audit-store/src/main/java/org/apache/inlong/audit/store/service/JdbcService.java
index 8ad6e28fc6..7dce3a2009 100644
---
a/inlong-audit/audit-store/src/main/java/org/apache/inlong/audit/store/service/JdbcService.java
+++
b/inlong-audit/audit-store/src/main/java/org/apache/inlong/audit/store/service/JdbcService.java
@@ -201,7 +201,7 @@ public class JdbcService implements InsertData,
AutoCloseable {
AuditRouteManager.getInstance().getAuditRoutes())) {
MetricsManager.getInstance().filterSuccess();
PulsarUtils.acknowledge(consumer, messageId);
- LOG.warn("The audit data does not match the routing rules and is
filtered out: {} ", msgBody);
+ LOG.debug("The audit data does not match the routing rules and is
filtered out: {} ", msgBody);
return;
}
diff --git a/inlong-audit/sql/apache_inlong_audit_mysql.sql
b/inlong-audit/sql/apache_inlong_audit_mysql.sql
index 533f2b7233..8f13d7319e 100644
--- a/inlong-audit/sql/apache_inlong_audit_mysql.sql
+++ b/inlong-audit/sql/apache_inlong_audit_mysql.sql
@@ -147,6 +147,7 @@ CREATE TABLE IF NOT EXISTS `audit_route_config` (
`inlong_group_id_include` VARCHAR(255) COMMENT 'Included Inlong group IDs
(regular expression)',
`inlong_group_id_exclude` VARCHAR(255) COMMENT 'Excluded Inlong group IDs
(regular expression)',
`status` TINYINT NOT NULL DEFAULT 1 COMMENT 'Status, 1=active, 0=inactive',
+ `priority` int(32) NOT NULL DEFAULT 1 COMMENT 'Priority level, default is
1',
`update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP COMMENT 'Update timestamp',
PRIMARY KEY (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = UTF8 COMMENT='Audit route configuration
table';