Details
-
Improvement
-
Status: Resolved
-
Resolution: Done
-
(unspecified)
-
None
-
None
-
Operating System: All
Platform: All
Description
https://lists.opendaylight.org/pipermail/genius-dev/2017-March/001152.html
Projects such as genius and netvirt, and probably others too, today have A LOT of caches in code already, all over the place, some using an old deprecated DataStoreCache API which has a number of known problems, some just using ad hoc in-line solutions, typically a (static) ConcurrentMap.
Issues with this as-is situation include technical debt issues include: (a) problematic testability due to frequent use of static, (b) possible unbounded cache growth due to lack of invalidation with proper API abstraction, thus potential memory usage issues at scale, (c) total lack of any sort of monitoring capability of cache usage e.g. by CLI commands, and any sort of administration of cache sizing and policy etc. For debuggability purpose we need to add utilities to dump these caches and reset them.
https://git.opendaylight.org/gerrit/#/c/48920/ proposes a (first version of) a consistent shared common caching infrastructure addressing these points for use OpenDaylight projects (primary intended to initially be consumed in genius and netvirt, replacing the existing as-is caches).
https://www.youtube.com/watch?v=h4HOSRN2aFc has a screen cast demo of this.
Main API interfaces are the CacheProvider and the Cache and CacheFunction.
SampleServiceWithCachingImpl code illustrates the use.