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

Reply via email to