Hi Bruce/Dan, #1. I see some issues due to introduction of special exceptions in the RegionVersionHolder. In some cases, it is leading to RegionVersionHolder data structure corruption causing wrong contains(version) results.
This happens because we set the version to max of currentVersion or newly recorded one. But do not try to fix the special exception present if any. It is easily reproducible even in junit tests. The corruption of holder data stricture causes even future record operation to fail. For example the following test fails: public void testInitialized() { RegionVersionHolder vh1 = new RegionVersionHolder(member); vh1.recordVersion(56, null); vh1.recordVersion(57, null); vh1.recordVersion(58, null); vh1.recordVersion(59, null); vh1.recordVersion(60, null); vh1 = vh1.clone(); System.out.println("This node init, vh1="+vh1); RegionVersionHolder vh2 = new RegionVersionHolder(member); for(int i=1;i<57;i++) { vh2.recordVersion(i,null); } vh2 = vh2.clone(); System.out.println("GII node init, vh2="+vh2); vh1.initializeFrom(vh2); vh1 = vh1.clone(); System.out.println("After initialize, vh1="+vh1); vh1.recordVersion(58,null); vh1.recordVersion(59,null); vh1.recordVersion(60,null); System.out.println("After initialize and record version, vh1="+vh1); vh1 = vh1.clone(); vh1.recordVersion(57,null); System.out.println("After initialize and record version after clone, vh1="+vh1); assertTrue(vh1.contains(57)); //FAILS } #2. I have observed that RegionVersionHolder#initializeFrom(RegionVersionHolder<T> source) doesn't not record already recorded version in itself contrary to what the comment above the method claims. In fact the junit tests also verifies the same so I couldn't understand the rationale behind it. It just adds an special exception if any higher version was already recorded by self. Shouldn't the resulting holder after initializing from a source contain records for both the holders? If not then why do we even need special exception. If possible could you please let me know your thoughts on this. Regards, Suranjan Kumar