This is an automated email from the ASF dual-hosted git repository. gongchao pushed a commit to branch bugfix-alarm-recoverge in repository https://gitbox.apache.org/repos/asf/hertzbeat.git
commit 9bd1014e9749aa8d6c9a8c22548098c264b997fb Author: tomsun28 <[email protected]> AuthorDate: Sun Aug 25 16:26:51 2024 +0800 [bugfix] fix alarm recover not match in converge reduce in some alarm condition Signed-off-by: tomsun28 <[email protected]> --- .../alert/reduce/AlarmConvergeReduce.java | 24 +++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/alerter/src/main/java/org/apache/hertzbeat/alert/reduce/AlarmConvergeReduce.java b/alerter/src/main/java/org/apache/hertzbeat/alert/reduce/AlarmConvergeReduce.java index 936cb2d8b..8b8dbb257 100644 --- a/alerter/src/main/java/org/apache/hertzbeat/alert/reduce/AlarmConvergeReduce.java +++ b/alerter/src/main/java/org/apache/hertzbeat/alert/reduce/AlarmConvergeReduce.java @@ -64,17 +64,11 @@ public class AlarmConvergeReduce { isHasIgnore = true; tags.remove(CommonConstants.IGNORE); } - int alertHash = Objects.hash(CommonConstants.ALERT_PRIORITY_CODE_CRITICAL) - + Arrays.hashCode(tags.keySet().toArray(new String[0])) - + Arrays.hashCode(tags.values().toArray(new String[0])); + int alertHash = generateAlertHash(CommonConstants.ALERT_PRIORITY_CODE_CRITICAL, tags); converageAlertMap.remove(alertHash); - alertHash = Objects.hash(CommonConstants.ALERT_PRIORITY_CODE_EMERGENCY) - + Arrays.hashCode(tags.keySet().toArray(new String[0])) - + Arrays.hashCode(tags.values().toArray(new String[0])); + alertHash = generateAlertHash(CommonConstants.ALERT_PRIORITY_CODE_EMERGENCY, tags); converageAlertMap.remove(alertHash); - alertHash = Objects.hash(CommonConstants.ALERT_PRIORITY_CODE_WARNING) - + Arrays.hashCode(tags.keySet().toArray(new String[0])) - + Arrays.hashCode(tags.values().toArray(new String[0])); + alertHash = generateAlertHash(CommonConstants.ALERT_PRIORITY_CODE_WARNING, tags); converageAlertMap.remove(alertHash); if (isHasIgnore) { tags.put(CommonConstants.IGNORE, CommonConstants.IGNORE); @@ -132,9 +126,7 @@ public class AlarmConvergeReduce { if (evalInterval <= 0) { return true; } - int alertHash = Objects.hash(currentAlert.getPriority()) - + Arrays.hashCode(currentAlert.getTags().keySet().toArray(new String[0])) - + Arrays.hashCode(currentAlert.getTags().values().toArray(new String[0])); + int alertHash = generateAlertHash(currentAlert.getPriority(), currentAlert.getTags()); Alert preAlert = converageAlertMap.get(alertHash); if (preAlert == null) { currentAlert.setTimes(1); @@ -165,4 +157,12 @@ public class AlarmConvergeReduce { } return true; } + + private int generateAlertHash(byte priority, Map<String, String> tags) { + List<String> keyList = tags.keySet().stream().filter(Objects::nonNull).sorted().toList(); + List<String> valueList = tags.values().stream().filter(Objects::nonNull).sorted().toList(); + return Objects.hash(priority) + + Arrays.hashCode(keyList.toArray(new String[0])) + + Arrays.hashCode(valueList.toArray(new String[0])); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
