From 1a3301e715a81ad9890f2de54bdddfd890b5c5cf Mon Sep 17 00:00:00 2001 From: Nawaz Dhandala Date: Wed, 5 Nov 2025 17:47:33 +0000 Subject: [PATCH] fix(monitor): normalize disk paths when matching disk metrics (handle backslashes, trailing slashes and root path) --- .../Monitor/Criteria/ServerMonitorCriteria.ts | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/Common/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.ts b/Common/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.ts index 7499c085f1..7c438f3c6f 100644 --- a/Common/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.ts +++ b/Common/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.ts @@ -84,6 +84,25 @@ export default class ServerMonitorCriteria { `Offline if not checked in minutes: ${offlineIfNotCheckedInMinutes}`, ); + const normalizeDiskPath: (value: string | undefined | null) => string = ( + value: string | undefined | null, + ): string => { + let normalized: string = (value || "").trim().toLowerCase(); + + if (normalized === "/") { + return normalized; + } + + normalized = normalized.replace(/\\/g, "/"); + normalized = normalized.replace(/\/+$/g, ""); + + if (normalized === "") { + return "/"; + } + + return normalized; + }; + if ( input.criteriaFilter.checkOn === CheckOn.IsOnline && differenceInMinutes >= offlineIfNotCheckedInMinutes @@ -169,13 +188,13 @@ export default class ServerMonitorCriteria { const diskPath: string = input.criteriaFilter.serverMonitorOptions?.diskPath || "/"; + const normalizedDiskPath: string = normalizeDiskPath(diskPath); + const diskMetric: BasicDiskMetrics | undefined = ( input.dataToProcess as ServerMonitorResponse ).basicInfrastructureMetrics?.diskMetrics.find( (item: BasicDiskMetrics) => { - return ( - item.diskPath.trim().toLowerCase() === diskPath.trim().toLowerCase() - ); + return normalizeDiskPath(item.diskPath) === normalizedDiskPath; }, );