From 7dd81beb0326b0874eeeacae6221eeffe3b79c1b Mon Sep 17 00:00:00 2001 From: Shefali Joshi Date: Fri, 10 Apr 2020 16:49:29 -0700 Subject: [PATCH] Remove telemetry data cache if a telemetry endpoint is removed (#2916) --- src/plugins/condition/ConditionManager.js | 2 +- .../condition/criterion/AllTelemetryCriterion.js | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/plugins/condition/ConditionManager.js b/src/plugins/condition/ConditionManager.js index 4256998f85..6e856f13eb 100644 --- a/src/plugins/condition/ConditionManager.js +++ b/src/plugins/condition/ConditionManager.js @@ -57,7 +57,6 @@ export default class ConditionManager extends EventEmitter { endpoint, this.telemetryReceived.bind(this, id) ); - // TODO check if this is needed this.updateConditionTelemetry(); } @@ -71,6 +70,7 @@ export default class ConditionManager extends EventEmitter { this.subscriptions[id](); delete this.subscriptions[id]; delete this.telemetryObjects[id]; + this.updateConditionTelemetry(); } initialize() { diff --git a/src/plugins/condition/criterion/AllTelemetryCriterion.js b/src/plugins/condition/criterion/AllTelemetryCriterion.js index 7faa6bbff8..3538142301 100644 --- a/src/plugins/condition/criterion/AllTelemetryCriterion.js +++ b/src/plugins/condition/criterion/AllTelemetryCriterion.js @@ -47,6 +47,21 @@ export default class AllTelemetryCriterion extends TelemetryCriterion { updateTelemetry(telemetryObjects) { this.telemetryObjects = { ...telemetryObjects }; + this.removeTelemetryDataCache(); + } + + removeTelemetryDataCache() { + const telemetryCacheIds = Object.keys(this.telemetryDataCache); + Object.values(this.telemetryObjects).forEach(telemetryObject => { + const id = this.openmct.objects.makeKeyString(telemetryObject.identifier); + const foundIndex = telemetryCacheIds.indexOf(id); + if (foundIndex > -1) { + telemetryCacheIds.splice(foundIndex, 1); + } + }); + telemetryCacheIds.forEach(id => { + delete (this.telemetryDataCache[id]); + }); } formatData(data, telemetryObjects) {