<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">As consistency models go, Infinispan is primarily strongly consistent (with 2-phase commit between data owners), with the exception of during a rehash where because of eventual consistency (inability to get a valid response to a remote GET) forces us to wait for more responses, a quorum if you like. &nbsp;Not dissimilar to PAXOS [1] in some ways.<div><br></div><div>I'm wondering whether, for the sake of performance, we should also offer a fully eventually consistent model? &nbsp;What I am thinking is that changes *always* occur only on the primary data owner. &nbsp;Single phase, no additional round trips, etc. &nbsp;The primary owner then asynchronously propagates changes to the other data owners. &nbsp;This would mean things run much faster in a stable cluster, and durability is maintained. &nbsp;However, during rehashes when keys are moved, the notion of the primary owner may change. &nbsp;So to deal with this, we could use vector clocks [2] to version each entry. &nbsp;Vector clocks allow us to "merge" state nicely in most cases, and in the case of reads, we'd flip back to a PAXOS style quorum during a rehash to get the most "correct" version.</div><div><br></div><div>In terms of implementation, almost all of this would only affect the DistributionInterceptor and the DistributionManager, so we could easily have eventually consistent flavours of these two components. &nbsp;</div><div><br></div><div>Thoughts?</div><div><br></div><div>Cheers</div><div>Manik</div><div><br></div><div>[1]&nbsp;<a href="http://en.wikipedia.org/wiki/Paxos_algorithm">http://en.wikipedia.org/wiki/Paxos_algorithm</a></div><div>[2]&nbsp;<a href="http://en.wikipedia.org/wiki/Vector_clock">http://en.wikipedia.org/wiki/Vector_clock</a><br><div>
<div><div>--</div><div>Manik Surtani</div><div><a href="mailto:manik@jboss.org">manik@jboss.org</a></div><div><a href="http://twitter.com/maniksurtani">twitter.com/maniksurtani</a></div><div><br></div><div>Lead, Infinispan</div><div><a href="http://www.infinispan.org">http://www.infinispan.org</a></div><div><br></div></div><br class="Apple-interchange-newline">
</div>
<br></div></body></html>