From 6e1a8232ec08922000ba4178e62e67c5f0732d57 Mon Sep 17 00:00:00 2001 From: Mikhail Chusavitin Date: Tue, 28 Jul 2026 19:38:36 +0300 Subject: [PATCH] fix(parser): dedup IDL events by timestamp to stop dropping recurring alarms ParseIDLLog deduped by eventID|eventType|description, which is identical across every occurrence of a recurring alarm (e.g. the flapping PCIe presence check on Inspur HGX boards). That collapsed every later occurrence into the first one, so applyGPUStatusFromEvents computed GPU health from a stale, truncated event list and marked failed GPUs as OK. --- internal/parser/vendors/inspur/idl.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/internal/parser/vendors/inspur/idl.go b/internal/parser/vendors/inspur/idl.go index 96214ca..3d74a6d 100644 --- a/internal/parser/vendors/inspur/idl.go +++ b/internal/parser/vendors/inspur/idl.go @@ -47,8 +47,12 @@ func ParseIDLLog(content []byte) []models.Event { // Clean up description description = cleanDescription(description) - // Create unique key for deduplication - eventKey := eventID + "|" + eventType + "|" + description + // Create unique key for deduplication. Must include the timestamp: + // recurring alarms (e.g. flapping PCIe presence checks) reuse the same + // eventID/eventType/description on every occurrence, so deduping without + // the timestamp collapses all later occurrences into the first one and + // silently drops the most recent (and most relevant) event. + eventKey := timestamp + "|" + eventID + "|" + eventType + "|" + description if seenEvents[eventKey] { continue }