From 0853e4b5b9399d3a0a601ec242faca6cf8a2a170 Mon Sep 17 00:00:00 2001 From: sonika-shah <58761340+sonika-shah@users.noreply.github.com> Date: Tue, 16 Jul 2024 11:56:19 +0530 Subject: [PATCH] Fix exact FQN matching for alert filter -filterByTableNameTestCaseBelongsTo (#17034) --- .../service/events/subscription/AlertsRuleEvaluator.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/events/subscription/AlertsRuleEvaluator.java b/openmetadata-service/src/main/java/org/openmetadata/service/events/subscription/AlertsRuleEvaluator.java index c2a58b3a937..882d661064a 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/events/subscription/AlertsRuleEvaluator.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/events/subscription/AlertsRuleEvaluator.java @@ -255,7 +255,13 @@ public class AlertsRuleEvaluator { EntityInterface entity = getEntity(changeEvent); for (String name : tableNameList) { - Pattern pattern = Pattern.compile(name); + // Escape regex special characters in table name for exact matching + String escapedName = Pattern.quote(name); + + // Construct regex to match table name exactly, allowing for end of string or delimiter (.) + String regex = "\\b" + escapedName + "(\\b|\\.|$)"; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(entity.getFullyQualifiedName()); if (matcher.find()) { return true;