Are you sure you're using Geode? The signature of RegionVersionHolder#recordVersion in Geode is:
RegionVersionHolder#recordVersion(long) I recommend checking out develop branch of Geode, write a test to confirm your bug and then submit that test with a Jira ticket. On Tue, May 23, 2017 at 7:10 AM, Suranjan Kumar <suranjan.ku...@gmail.com> wrote: > 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 >