...
# | Issue | Notes | Decision |
---|---|---|---|
1 | Java Streams API for CPS and NCMP | CPS-2146 Using Java Streams to reduce memory consumption in CPS and NCMP | |
2 | Remove Hazelcast from NCMP Module Sync | Implementation proposal TBA | |
3 | Remove Hazelcast for Trust Level | Implementation proposal TBA | |
4 | Remove use of Postgres arrays in Respository methods | CPS-1574: Remove 32K limit from DB operations (Proposal 1) | |
5 | Replace Hibernate with JDBC (via Spring Data JDBC) | Implementation proposal TBA | |
6 | Review memory use during UPDATE operations | Study TBA |
<Note. use green for closed issues, yellow for important ones if needed>
...
Component | Hazelcast Structure | Type | Purpose | Recommendation | Implementation Proposal | Notes |
---|---|---|---|---|---|---|
CPS | anchorDataCache | Map<String, AnchorDataCacheEntry> | Needs further analysis | |||
NCMP | moduleSyncWorkQueue | 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 | |
NCMP | moduleSyncStartedOnCmHandles | Map<String, Object> | Remove | TBA | One entry is stored in memory per CM handle in ADVISED state. | |
NCMP | dataSyncSemaphores | 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. | ||
NCMP | trustLevelPerCmHandle | Map<String, TrustLevel> | Remove | TBA | One 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 | |
NCMP | trustLevelPerDmiPlugin | 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. | ||
NCMP | cmNotificationSubscriptionCache | 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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
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.