Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

#IssueNotes Decision
1Java Streams API for CPS and NCMPCPS-2146 Using Java Streams to reduce memory consumption in CPS and NCMP
2Remove Hazelcast from NCMP Module SyncImplementation proposal TBA
3Remove Hazelcast for Trust LevelImplementation proposal TBA
4Remove use of Postgres arrays in Respository methodsCPS-1574: Remove 32K limit from DB operations (Proposal 1)
5Replace Hibernate with JDBC (via Spring Data JDBC)Implementation proposal TBA
6Review memory use during UPDATE operationsStudy TBA

<Note. use green for closed issues, yellow for important ones if needed>

...

ComponentHazelcast StructureTypePurposeRecommendationImplementation ProposalNotes
CPSanchorDataCache

Map<String, AnchorDataCacheEntry>


Needs further analysis

NCMPmoduleSyncWorkQueue

BlockingQueue<DataNode>


Remove
TBA

Entire CM handles are stored in work queue for module sync. This creates very high memory usage during CM handle registration. The use of this blocking queue likely causes issues with load balancing during module sync also.

A PoC was constructed: WIP Remove hazelcast map for module sync | https://gerrit.nordix.org/c/onap/cps/+/20724

NCMPmoduleSyncStartedOnCmHandles

Map<String, Object>


Remove
TBAOne entry is stored in memory per CM handle in ADVISED state.
NCMPdataSyncSemaphores

Map<String, Boolean>


No immediate action, see notes
Low priority - this map is only populated if data sync is enabled for a CM handle. If the feature is used, it will store one entry per CM handle with data sync enabled.
NCMPtrustLevelPerCmHandle

Map<String, TrustLevel>


Remove
TBAOne entry is stored in memory per CM handle. This is directly implicated in logs supplied in investigation of out-of-memory errors in CPS-2146
NCMPtrustLevelPerDmiPlugin

Map<String, TrustLevel>


Low risk, see notes
Low priority - there are only small number of DMIs, so this structure will not grow so large. However, if trustLevelPerCmHandle is being removed, this structure may be removed as part of the same solution.
NCMPcmNotificationSubscriptionCache

Map<String, Map<String, DmiCmNotificationSubscriptionDetails>>


Will need further analysis in future; see notes
This is low priority, as the CM subscription feature is not fully implemented, thus is not in use. It is unclear how much data will be stored in the structure. It is presumed to be low, as this structure will only hold pending subscriptions.

...

Note this change is blocked by CPS-1673. The use of OneToMany mapping in FragmentEntity appears to be only place where CPS is currently reliant on functionality provided by JPA.

Jira
serverONAP Jira
columnIdsissuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolution
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyCPS-1673

Memory usage during UPDATE operations

CPS current implementation of update operations involves reading the existing data from DB, applying changes, and storing again. As update operations involve reading data, the current implementations of update operations should be reviewed to ensure they are internally breaking large requests into batches to restrict memory use.