From eb27a3d151061d0168b3e78d7934b0e8c86974a4 Mon Sep 17 00:00:00 2001 From: kmohr-soprasteria <57349523+kmohr-soprasteria@users.noreply.github.com> Date: Thu, 22 May 2025 10:01:04 +0200 Subject: [PATCH 1/3] Add comment from Defne --- .../CyclicCacheQualityMeasurementProcess.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/spec/additionalDescription/CyclicCacheQualityMeasurementProcess.md b/spec/additionalDescription/CyclicCacheQualityMeasurementProcess.md index 3864b638..08ae8524 100644 --- a/spec/additionalDescription/CyclicCacheQualityMeasurementProcess.md +++ b/spec/additionalDescription/CyclicCacheQualityMeasurementProcess.md @@ -64,7 +64,9 @@ Each type of difference is assigned a configurable weight: A total weighted score is computed per device and used to quantify the extent of divergence. -### Sample output +### Output + +Each completed comparison will add a new entry into ElasticSearch. The following example shows such an entry: ```json { "mount-name": "100250001", @@ -78,6 +80,12 @@ A total weighted score is computed per device and used to quantify the extent of } ``` +The */v1/provide-cache-quality-statistics* service enables external clients to retrieve previously calculated cache quality measurement results from ElasticSearch. +It is a read-only provider service and does not perform any new measurement itself. +When triggered, the service constructs a query based on the provided filters and fetches the relevant data entries from the measurement database. +Results may include raw statistics or grouped data, depending on the input. +The service supports MWDI's broader monitoring goals by making the quality status of cached ControlConstructs transparent and accessible for analysis or visualization. + ## Outlook For now, the gathered quality statistics will only be made available via a new provider service offered by MWDI. In the future it is planned that these statistics will be gathered in a (not yet existing) Performance Management application. \ No newline at end of file From fcf56316791e8c58186ed9568950a0260edef373 Mon Sep 17 00:00:00 2001 From: kmohr-soprasteria <57349523+kmohr-soprasteria@users.noreply.github.com> Date: Thu, 22 May 2025 10:55:40 +0200 Subject: [PATCH 2/3] readme --- README.md | 42 +++++++++++------- ...109_ProvideCacheQualityStatistics.plantuml | 24 ++++++++++ .../109_ProvideCacheQualityStatistics.png | Bin 0 -> 16742 bytes 3 files changed, 51 insertions(+), 15 deletions(-) create mode 100644 spec/diagrams/109_ProvideCacheQualityStatistics.plantuml create mode 100644 spec/diagrams/109_ProvideCacheQualityStatistics.png diff --git a/README.md b/README.md index fdd0a19a..af583da9 100644 --- a/README.md +++ b/README.md @@ -32,21 +32,33 @@ The MWDI offers subscribing for ONF-TR-532-like notifications (webhook based met ### Latest Update **v1.3.0** -Spec release 1.3.0 adds new functionality to improve and measure data quality of the cache in terms of the new qualityMeasurement process. -The qualityMeasurement process -- selects a new update candidate device every x minutes (configurable, intially set to 1 minute) -- retrieves both the already cached and the current ControlConstruct from live (thereby also updating the cache) -- compares both and scores the changes -- writes the results into ElasticSearch for evaluation and analysis purposes - -The introduction of this mechanism required changes to -- slidingWindow process: the next update candidate for the slidingWindow is no longer taken from deviceList, but read from the metadata status table -- metadata status table: - - new attribute for device-type - - ordering according to the timestamp storing the last complete ControlConstruct update time - - a new input filter (requestBody) for retrieving the next update candidate for both qualityMeasurement and slidingWindow process - -(TBD) Moreover, an interface to Kafka has been introduced, to improve the performance of notification handling. (Receiving notifications from NotificationProxy was turned-off before, due to it not being performant enough.) +This release introduced some major changes to the underlying processes for updating the cache. + +First of all, the deviceList and metadataTable have been merged into **deviceMetadataList**: +- before the MWDI was going over the deviceList with a slidingWindow to find the next device update candidate device. Devices were removed from the deviceList when the were no longer in connected state and their ControlConstructs in the cache as well. In addition there was the metadataTable, which also included information about devices, which had been added to the MWDI before, but no longer were in connected state +- now all of this has been changed: + - the deviceMetadataList is now sorted according to retrieval priority (based on timestamp of last complete ControlConstruct update) and slidingWindow takes the next update device according to the sorting (or possibly it could use a (reduced) sorted in-memory copy of the list instead): highest priority have those devices without a ControlConstruct copy in the cache, followed by the device with the oldest ControlConstruct in the cache + - when devices leave connected state: (a) they are no longer deleted from the deviceMetadataList, but kept according to the configured retention (will not be queried for CCs though) and (b) their ControlConstructs in the cache could be kept rather than being deleted (according to the new *historicalControlConstructPolicy* profileInstance) as a means to allow for historical MWDI functionality +- the metadata has been enriched with deviceType, which is mapped from airInterface information (via new regex profile), and vendor, which in turn is mapped from the deviceType; per default both are set to *unknown* (periodical retries to update it to a proper value) +- adds new service */v1/provide-list-of-all-mwdi-devices*, which returns all devices from the deviceMetadataList (complements already existing service */v1/provide-list-of-connected-devices*) + +Next is the introduction of a **cache quality measurement process**: +- it selectes a new candidate device from the deviceMetadataList every x minutes (configurable, intially set to 1 minute) + - works in tandem with the slidingWindow process and selects the next device with oldest ControlConstruct in the cache, not yet found in the slidingWindow + - retrieves the ControlConstruct from live (thereby updating the cache) and the copy from the cache + - compares both and scores the changes + - writes the results into ElasticSearch for evaluation and analysis purposes + - if either/or retrieval of live or cache ControlConstruct fails, there is no comparison for the given device, i.e. no statistics record written to the cache +- new service */v1/provide-cache-quality-statistics* to retrieve the statistics, allows filtering on date (day, since) and grouping (day, deviceType, vendor, or combined) + +Also **notification handling** has been changed: +- before, MWDI had subscriptions for receiving notifications from NotificationProxy (NP). + - In case of a new notification, NP was pushing the notification to MWDI. + - Due to performance problems this had been disabled in production +- now, Kafka has been added in between NP and MWDI to overcome the performance problems + - NP will push the notifications to Kafka ("proper" notification topic) + - MWDI will pull the notifications from Kafka ("proper" notification topic) +- the *regard*-services previously used to receive notifications have been marked as deprecated The list of related issues can be found in issue collection [MWDI v1.3.0_spec](https://github.com/openBackhaul/MicroWaveDeviceInventory/milestone/20) diff --git a/spec/diagrams/109_ProvideCacheQualityStatistics.plantuml b/spec/diagrams/109_ProvideCacheQualityStatistics.plantuml new file mode 100644 index 00000000..1b82ad61 --- /dev/null +++ b/spec/diagrams/109_ProvideCacheQualityStatistics.plantuml @@ -0,0 +1,24 @@ +@startuml 109_ProvideCacheQualityStatistics + +skinparam responseMessageBelowArrow true +title RequestForCacheQualityStatisticsCausesReadingFromElasticSearch + +participant "external" as requestor +participant "MWDI://v1/provide-cache-quality-statistics" as mwdi +participant "ElasticSearch" as elastic + + +'POST /v1/provide-cache-quality-statistics\nRequest body with filters:\n- deviceId\n- vendor\n- deviceType\n- since\n- groupBy +activate mwdi +requestor -> mwdi : {optional filters: \n- time (date, date-since) \n- groupBy (day, deviceType, vendor) } (apiKeyAuth) + +mwdi -> elastic : {optional filters} +activate elastic +elastic --> mwdi : {(filtered/grouped) statistics} +deactivate elastic + + +mwdi --> requestor : {(filtered/ grouped) statistics} +deactivate mwdi + +@enduml diff --git a/spec/diagrams/109_ProvideCacheQualityStatistics.png b/spec/diagrams/109_ProvideCacheQualityStatistics.png new file mode 100644 index 0000000000000000000000000000000000000000..a21dca105d4e7dc3f6607239a1eb955283e64fe1 GIT binary patch literal 16742 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 literal 0 HcmV?d00001 From 4725da8cb40ceb9725fcf00f7243d9311b12c98d Mon Sep 17 00:00:00 2001 From: kmohr-soprasteria <57349523+kmohr-soprasteria@users.noreply.github.com> Date: Thu, 22 May 2025 11:05:52 +0200 Subject: [PATCH 3/3] diagram readme --- ...109_ProvideCacheQualityStatistics.plantuml | 2 +- spec/diagrams/README.md | 23 ++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/spec/diagrams/109_ProvideCacheQualityStatistics.plantuml b/spec/diagrams/109_ProvideCacheQualityStatistics.plantuml index 1b82ad61..91b89258 100644 --- a/spec/diagrams/109_ProvideCacheQualityStatistics.plantuml +++ b/spec/diagrams/109_ProvideCacheQualityStatistics.plantuml @@ -1,7 +1,7 @@ @startuml 109_ProvideCacheQualityStatistics skinparam responseMessageBelowArrow true -title RequestForCacheQualityStatisticsCausesReadingFromElasticSearch +title RequestForCacheQualityStatisticsCausesReadingFromElasticSearch participant "external" as requestor participant "MWDI://v1/provide-cache-quality-statistics" as mwdi diff --git a/spec/diagrams/README.md b/spec/diagrams/README.md index 2bf3ed8b..6a1ca179 100644 --- a/spec/diagrams/README.md +++ b/spec/diagrams/README.md @@ -1,7 +1,10 @@ # MicroWaveDeviceInventory Diagrams . . -![PromptForEmbeddingCauses](./00x_CyclicOperationBasedDeviceListSync.png) +![PromptForEmbeddingCausesCyclicCacheUpdate](./00x_CyclicOperationBasedDeviceListSync.png) +. +. +![PromptForEmbeddingCausesCyclicQualityMeasurement](./00z_CyclicCacheQualityMeasurement.png) . . ![PromptForEmbeddingCausesSubscribingForNotifications](./01x_MwdiSubscribesAtNp.png) @@ -40,6 +43,24 @@ ![RequestForListOfActualDeviceEquipmentCausesReadingFromCache](./103_ProvideListOfParallelLinks.png) . . +![RequestForListOfLinksCausesReadingFromCache](./104_ProvideListOfLinks.png) +. +. +![RequestFor](./105_ProvideListOfLinkPorts.png) +. +. +![RequestForListOfLinkPortsCausesReadingFromCache](./106_ProvideDataOfAllLinks.png) +. +. +![RequestForDataOfLinksCausesReadingFromCache](./107_ProvideDataOfAllLinkPorts.png) +. +. +![RequestForDeviceStatusMetadataCausesReadingFromElasticSearch](./108_ProvideDeviceMetadata.png) +. +. +![RequestForCacheQualityStatisticsCausesReadingFromElasticSearch](./109_ProvideCacheQualityStatistics.png) +. +. ![SubscribingAtMwdiForDeviceAttributeChangesCausesSendingNotifications](./120_MwdiNotifiesAttributeChange.png) . .