This preview shows page 1. Sign up to view the full content.
Unformatted text preview: r can simply invalidate everyone who has a copy. Delay response to write until all copies have been invalidated. After invalidation, clients will go to the server to get the new copy. Illustrate with two concurrent writes, to two concurrent readers. Readers have item cached. Writers send change through to server; order is the order they reach the server. Server uses callback state to invalidate caches. Then reader has a cache miss, and fetches the value from the server. [Note race conditions: A client might have data invalidated, and go back to the server, before the remaining clients have received the invalidation. What if we provided the old data? Not even eventually consistent! What if we provide the new data? Might be ok, but need to ensure that updates appear at each client in the order they were applied at the server – e.g., invalidates must be applied in order. E.g., if update A, B, C – then shouldn’t see C’ while I can still read A (if some other node can read A’ and C) – that’s not serializable. What if w...
View Full Document
- Spring '14