Cache for RunningStates. Two buckets here: volatile and durable. Volatile is a LRUMap with a definite limit. Durable bucket is just a simple map. One is expected to free a durable value when it is no longer needed.
what to do when an item is evicted from volatile cache.
Delete value from both volatile and durable buckers.
Set value to durable bucket. Remove from volatile.
Iterator over entries.
Move value from durable to volatile bucket
Retrieve value, be it durable or volatile.
Iterator over keys.
Set value to volatile bucket. Update value in durable bucket, if present.
Iterator over values.