References

CPS-2000 - Getting issue details... STATUS

Assumptions


AssumptionNotes
1

Solution should be CPS-Core based not just in NCMP

Caffeine Cache is a CPS-Core solution
Upgrade is also possible without NCMP
2

Upgrades are backward compatible


Issues & Decisions


Issue

Notes 

Decision

1Preferred AlternativeCPS Team prefers Alternative 2

  Team and stakeholders agreed on Alternative 2

2Integration or jUnit Test First
Agreed but only possible using Unit Test (stil using real cache etc.)

Solution Proposals

Alternative 0: Remove existing cache

  • tried but much slower and ODL memory leak experienced

Alternative 1: New CPS-Core Kafka Message without confirmation

Notes

  1. LCM event should; be processed within milliseconds
  2. CPS-Core needs (new) infrastructure to produce (and Consume) Kafka Cloud Events
  3. Caffeine cache has an expiry (10mins) So NOT all models are cached all the time
  4. Worst case scenario: an update (with newly modelled data) happens before cache expiry. Update gets reject (fails validation)
    1. mitigation: Invalidate cache upon validation error and try again (consider this as an extension alternative 2 )
  5. Delete-use case need to clear cache (for all instances) as well

ProCon
1
Update CPS-Core to produce and consume Kafka messages
2
More Kafka messages (new interface)
3No unnecessary validation
4Upgrade itself not delayed

Alternative 2 (chosen): Clear Cache upon validation error

  1. Worst case scenario: an update (with newly modelled data) happens before cache expiry. Update gets reject (fails validation)
    1. mitigation: Invalidate cache upon validation error and try again (once)

ProCon
1
10 minutes window where additional validation might occur
2fails-safe wil cover all scenarios
3NO new message/interface
4Simplest solution
5Upgrade itself not delayed
6
Real validation errors will always  tried twice and perform relatively slowly

Alternative 3: (existing) Kafka Message with (new) Kafka Confirmation

Not viable without knowing how many instances need to form ie need Hazelcast Cache

Alternative 4: New COS-Core Kafka Message with (new) Hazelcast Cache (semaphore) Confirmation

Just an extension of Alternative 1 which is not the preferred option

Alternative 5: (existing) Polling (status watchdog) with (new) confirmation

Not viable because upgrades can be completed well withing polling time

Alternative 6: Add version info the cache-key


ProCon
1No issue with non-distributed cache
2
NCMP specific solution?
3
Version info NOT readily availably (many impacts)
  • No labels