----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/58599/#review172678 -----------------------------------------------------------
This fix does address one particular failure. Should you also make some other changes to prevent and/or detect when it happens in other contexts? One issue is the serialization of the TombstoneMessage. I think the toData code should be changed to detect that it was given a RegionVersionVector that has a mix of element types and fail with an exception thrown from toData. This is better than what currently happens which is we report corruption during fromData deserialization. The other thing not to lose track of, but that probably should be a seperate ticket is that VMRegionVersionVector which is strongly typed to only have InternalDistributedMember elements can instead have DiskStoreID elements. We should change the implementation to never allow a mix but to also not say it is always InternalDistributedMember unless we enforce that (like we did for DiskStoreID on the DiskRegionVersionVector class). It was also reported that VersionedObjectList had a similar issue as TombstoneMessage and that should be looked into. - Darrel Schneider On April 20, 2017, 6:03 p.m., anilkumar gingade wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/58599/ > ----------------------------------------------------------- > > (Updated April 20, 2017, 6:03 p.m.) > > > Review request for geode, Darrel Schneider, Eric Shu, and Lynn Gallinat. > > > Repository: geode > > > Description > ------- > > TombstoneMessage serialization code assumes the member info in RVV to be > either membership-id or disk-id and uses this info while de-serializing. > When there is a mix of persistent and non-persistent region in the cluster > (between nodes), the above assumption will not hold good; resulting in data > serialization exception. > > When there is a mix of persistent and non-persistent region, the version info > is always generated from the persistent member. While constructing the > tombstone message, even though there is no tombstone version generated on > non-persistent member, it was added into the tombstone message, resulting in > mixed version source, causing deserialization failure. > > > Diffs > ----- > > > geode-core/src/main/java/org/apache/geode/internal/cache/versions/RegionVersionVector.java > 2e01c00 > > geode-core/src/test/java/org/apache/geode/internal/cache/versions/TombstoneDUnitTest.java > PRE-CREATION > > > Diff: https://reviews.apache.org/r/58599/diff/1/ > > > Testing > ------- > > Manual testing. > Added new dunit test. Verified the failure without change. > precheckin in progress. > > > Thanks, > > anilkumar gingade > >