<HTML><BODY style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space; "><DIV>I'm hoping that JBoss Cache can recover cache consistency following a</DIV><DIV>transient network outage.  From my readings of both Cache and JGroups,</DIV><DIV>I've ended up thinking that it's JGroups that notices begin-and-end</DIV><DIV>of network partitions and that JGroups then notifies dependent classes</DIV><DIV>so that they know that they need to deal with the potential merging of</DIV><DIV>any higher-level state changes in each sub-cluster during the network partition.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>This seems consistent with a recent response from Bela Ban (2007.0914):</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN><FONT class="Apple-style-span" face="Helvetica"><A href="http://sourceforge.net/mailarchive/message.php?msg_id=46EA2BA0.9090508%40yahoo.com">http://sourceforge.net/mailarchive/message.php?msg_id=46EA2BA0.9090508%40yahoo.com</A></FONT></DIV><DIV> </DIV><DIV>But from my understanding of JBoss Cache (the dependent class I'm considering) via:</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>"JBoss Cache TreeCache: A Structured, Replicated, Transactional Cache"</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>(<FONT class="Apple-style-span" face="Helvetica"><A href="http://labs.jboss.com/file-access/default/members/jbosscache/freezone/docs/1.4.1.SP4/TreeCache/en/html_single/index.html">http://labs.jboss.com/file-access/default/members/jbosscache/freezone/docs/1.4.1.SP4/TreeCache/en/html_single/index.html</A>)</FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica"><BR class="khtml-block-placeholder"></FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica">I can't identify anything as directly addressing JBoss Cache's "application-data" healing from a network partition...</FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica"><BR class="khtml-block-placeholder"></FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica">Here's a particular test scenario that would need to handle the situation I'm thinking of:</FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica"><BR class="khtml-block-placeholder"></FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica"><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>JBoss Cache </FONT><FONT class="Apple-style-span" face="Helvetica">ClusterName="A-B" with two members ("A" and "B") is started.</FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica"><BR class="khtml-block-placeholder"></FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica"><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>"A" and "B" both view "A" as "coordinator".  </FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica"><BR class="khtml-block-placeholder"></FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica"><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>To keep things simple, let's have only a single region.</FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica"><BR class="khtml-block-placeholder"></FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica"><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>No Cache Loaders are used -- thus all Cache state exists only in-memory (no back-end data store).</FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica"><BR class="khtml-block-placeholder"></FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica">Time passes peacefully and "A-B" builds up some amount of Cache state, all of it consistent across A and B.</FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica"><BR class="khtml-block-placeholder"></FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica">Then, a network partition occurs (perhaps a backbone router is powered down for 10-15 minutes to add an additional card).</FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica"><BR class="khtml-block-placeholder"></FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica"><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>After some amount of time, both A and B finally end-up marking each other "dead" and themselves</FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica"><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>as JGroup coordinator for their sub-cluster.</FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica"><BR class="khtml-block-placeholder"></FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica">During this partition, both A and B can continue to accept updates to their Cache state, right?  </FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica">And t</FONT><FONT class="Apple-style-span" face="Helvetica">his would result in the now-independent Caches becoming distinct from each other.</FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica"><BR class="khtml-block-placeholder"></FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica">So, once the result of the network partition is resolved, JGroups will realize this and notify JBoss Cache</FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica">via a ViewChange.</FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica"><BR class="khtml-block-placeholder"></FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica">My question is:</FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica"><BR class="khtml-block-placeholder"></FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica"><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN> does JBoss Cache itself somehow merge the during-partition state changes together?</FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica"><BR class="khtml-block-placeholder"></FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica">Since neither member was itself down and both could potentially have partition-related state changes,</FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica">causing either to simply dump their in-memory state and ask for a full state-transfer will result in a</FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica">loss of information.</FONT></DIV><DIV><FONT class="Apple-style-span" face="Helvetica"><BR class="khtml-block-placeholder"></FONT></DIV></BODY></HTML>