-----------------------------------------------------------
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
> 
>

Reply via email to