Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
  1. Compare Active Subscriptions (DB) with the current request
    1. Find delta
      • we have the same subscription if we have the same combination of 
        1. cmhandle AND xpath filter AND datastore
    2. Create structure to hold all 'PENDING' subscriptions
      1. HZ map
    3. Update when there's overlapping
      • updating the status in the HZ map from 'PENDING' for duplicated request(s)

A:

Active Subscriptions model imported from Database

SubscriptionId

cmHandle

filter

datastore

A-10ch-1p1/c1ncmp-datastore:passthrough-operational
A-10ch-1p2/c2ncmp-datastore:passthrough-operational
A-10ch-2p1/c1ncmp-datastore:passthrough-operational
A-10ch-2p2/c2ncmp-datastore:passthrough-operational


Pending Subscriptions saved in CmSubscriptionCache

SubscriptionId

dmi-plugin

affectedCmHandles

status

A-10dmi-1["ch-1","ch-2"]PENDING
A-10dmi-2["ch-3"]PENDING


Wide Net → Narrow Net method

Compare datastores → Compare XPath Filters → Compare CMhandles

B:  

 IMap<String, CmSubscriptionCacheObject> pendingCmSubscriptions

Map of Subscription Id and  CmSubscriptionCacheObject

C: 

draw.io Diagram
bordertrue
diagramNameA Diagram
simpleViewerfalse
width
linksauto
tbstyletop
lboxtrue
diagramWidth1006
revision10

B: 

draw.io Diagram
bordertrue
diagramNameC Diagram
simpleViewerfalse
width
linksauto
tbstyletop
lboxtrue
diagramWidth401
revision7
Upon subscription consumption → find delta → if delta not found → compare subscriptionIds on pendingCmSubscriptions map