-
Type:
Story
-
Status: Closed (View Workflow)
-
Priority:
Major
-
Resolution: Done
-
Affects Version/s: None
-
Fix Version/s: 1.10.0
-
Component/s: None
-
Labels:
-
Story Points:8
-
Epic Link:
-
Sprint:K Sprint #1 - Platform, K Sprint #2 - Platform, K Sprint #3 - Platform
Transaction performance is currently improved by caching reads within a transaction. However, for consistency reasons, each transaction has to rebuild its cache within the transaction. This leads to significant overhead within transactions used in the ResourceStore where a huge number of reads occur within a transaction. But we can safely use cached maps within transactions if we simply ensure that at the start of the transaction all events have been received. The way that can be done is by simply submitting a linearizable read to each partition. Atomix guarantees that once a linearizable read returns, all prior published events will have already been received by the client, so caches will have been updated. Then, transaction caches need only be updated locally from an existing cache to preserve repeatable read isolation.
I'm not sure if this should be implemented as a feature of Atomix to allow synchronizing the client or just as a read in ONOS. Will figure that out.