From 7f1aee53bbb2987f21a679d46961fbac8637d4bb Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Sun, 15 Mar 2026 19:23:00 +0100 Subject: [PATCH] fix(ocpp20): clean up VariableManager mappings cache on station stop invalidateMappingsCache was never called on station stop, leaking invalidVariables and validatedStations entries for each stopped station. Call it alongside resetRuntimeOverrides in stop() for complete cleanup. --- .../ocpp/2.0/OCPP20IncomingRequestService.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/charging-station/ocpp/2.0/OCPP20IncomingRequestService.ts b/src/charging-station/ocpp/2.0/OCPP20IncomingRequestService.ts index 3e2a783e..50ca5287 100644 --- a/src/charging-station/ocpp/2.0/OCPP20IncomingRequestService.ts +++ b/src/charging-station/ocpp/2.0/OCPP20IncomingRequestService.ts @@ -667,11 +667,14 @@ export class OCPP20IncomingRequestService extends OCPPIncomingRequestService { this.stationStates.delete(chargingStation) } try { - OCPP20VariableManager.getInstance().resetRuntimeOverrides(chargingStation.stationInfo?.hashId) - logger.debug(`${chargingStation.logPrefix()} ${moduleName}.stop: Runtime overrides cleared`) + const variableManager = OCPP20VariableManager.getInstance() + const stationId = chargingStation.stationInfo?.hashId + variableManager.resetRuntimeOverrides(stationId) + variableManager.invalidateMappingsCache(stationId) + logger.debug(`${chargingStation.logPrefix()} ${moduleName}.stop: Per-station state cleared`) } catch (error) { logger.error( - `${chargingStation.logPrefix()} ${moduleName}.stop: Error clearing runtime overrides:`, + `${chargingStation.logPrefix()} ${moduleName}.stop: Error clearing per-station state:`, error ) } -- 2.53.0