You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by bs...@apache.org on 2015/12/17 17:57:43 UTC
incubator-geode git commit: Modifying the fix for handling old client
IDs
Repository: incubator-geode
Updated Branches:
refs/heads/develop fdec70bcd -> f2a852d88
Modifying the fix for handling old client IDs
The previous fix for handling old client identifiers left the IDs always
thinking that the client was running version GFE_82. The new fix makes
the client defer to its encapsulated InternalDistributedMember identifier
to determine the client's version and handles deserialization of the
encapsulated pre-GFE_90 identifier in InternalDistributedMember.fromData().
This fix has the added benefit of reducing the size of client identifiers.
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/f2a852d8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/f2a852d8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/f2a852d8
Branch: refs/heads/develop
Commit: f2a852d880d166d8b4a4a11218a38f49e6016864
Parents: fdec70b
Author: Bruce Schuchardt <bs...@pivotal.io>
Authored: Thu Dec 17 08:47:10 2015 -0800
Committer: Bruce Schuchardt <bs...@pivotal.io>
Committed: Thu Dec 17 08:51:31 2015 -0800
----------------------------------------------------------------------
.../internal/direct/DirectChannel.java | 2 +-
.../membership/InternalDistributedMember.java | 13 ++++-
.../internal/membership/NetMember.java | 4 ++
.../internal/membership/gms/GMSMember.java | 7 +--
.../tier/sockets/ClientProxyMembershipID.java | 15 ++----
.../internal/cache/tier/sockets/HandShake.java | 16 +++----
.../client/ClientCacheFactoryJUnitTest.java | 50 ++++++++++++++++++++
.../sanctionedDataSerializables.txt | 12 ++---
8 files changed, 89 insertions(+), 30 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f2a852d8/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/direct/DirectChannel.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/direct/DirectChannel.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/direct/DirectChannel.java
index d4df3bf..a4245a0 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/direct/DirectChannel.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/direct/DirectChannel.java
@@ -596,7 +596,7 @@ public class DirectChannel {
logger.trace(LogMarker.DM, "Not a member: {}", destination);
}
if (ce == null) ce = new ConnectExceptions();
- ce.addFailure(destination, new ShunnedMemberException(LocalizedStrings.DirectChannel_SHUNNING_0.toLocalizedString()));
+ ce.addFailure(destination, new ShunnedMemberException(LocalizedStrings.DirectChannel_SHUNNING_0.toLocalizedString(destination)));
}
else {
try {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f2a852d8/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/InternalDistributedMember.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/InternalDistributedMember.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/InternalDistributedMember.java
index b112b92..a77c211 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/InternalDistributedMember.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/InternalDistributedMember.java
@@ -18,6 +18,7 @@ package com.gemstone.gemfire.distributed.internal.membership;
import java.io.DataInput;
import java.io.DataOutput;
+import java.io.EOFException;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
@@ -1023,7 +1024,11 @@ public final class InternalDistributedMember
// just in case this is just a non-versioned read
// from a file we ought to check the version
if (this.version >= Version.GFE_90.ordinal()) {
- netMbr.readAdditionalData(in);
+ try {
+ netMbr.readAdditionalData(in);
+ } catch (EOFException e) {
+ // nope - it's from a pre-GEODE client or WAN site
+ }
}
}
@@ -1254,6 +1259,12 @@ public final class InternalDistributedMember
sb.append(hostname);
}
}*/
+
+ public final void setVersionObjectForTest(Version v) {
+ this.version = v.ordinal();
+ this.versionObj = v;
+ netMbr.setVersion(v);
+ }
public final Version getVersionObject() {
return this.versionObj;
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f2a852d8/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/NetMember.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/NetMember.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/NetMember.java
index 6811073..128f96c 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/NetMember.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/NetMember.java
@@ -21,6 +21,8 @@ import java.io.DataOutput;
import java.io.IOException;
import java.net.InetAddress;
+import com.gemstone.gemfire.internal.Version;
+
/**
* This is the SPI for the basic element of membership provided in the
* GemFire system.
@@ -68,6 +70,8 @@ public interface NetMember extends Comparable<NetMember>
public void setPreferredForCoordinator(boolean preferred);
public byte getMemberWeight();
+
+ public void setVersion(Version v);
/** write identity information not known by DistributedMember instances */
public void writeAdditionalData(DataOutput out) throws IOException;
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f2a852d8/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMember.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMember.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMember.java
index b1a4883..84ace6c 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMember.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMember.java
@@ -26,11 +26,9 @@ import org.jgroups.util.UUID;
import com.gemstone.gemfire.DataSerializer;
import com.gemstone.gemfire.distributed.DurableClientAttributes;
-import com.gemstone.gemfire.distributed.internal.DistributionManager;
import com.gemstone.gemfire.distributed.internal.membership.MemberAttributes;
import com.gemstone.gemfire.distributed.internal.membership.NetMember;
import com.gemstone.gemfire.internal.DataSerializableFixedID;
-import com.gemstone.gemfire.internal.InternalDataSerializer;
import com.gemstone.gemfire.internal.Version;
import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
@@ -349,6 +347,10 @@ public class GMSMember implements NetMember, DataSerializableFixedID {
public void setVmKind(int vmKind) {
this.vmKind = vmKind;
}
+
+ public void setVersion(Version v) {
+ this.versionOrdinal = v.ordinal();
+ }
public void setBirthViewId(int birthViewId) {
this.vmViewId = birthViewId;
@@ -441,7 +443,6 @@ public class GMSMember implements NetMember, DataSerializableFixedID {
@Override
public void writeAdditionalData(DataOutput out) throws IOException {
- // note: member weight and other GMS-only info is not included here
out.writeLong(uuidMSBs);
out.writeLong(uuidLSBs);
out.write(memberWeight);
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f2a852d8/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientProxyMembershipID.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientProxyMembershipID.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientProxyMembershipID.java
index daa07f4..44c6152 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientProxyMembershipID.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientProxyMembershipID.java
@@ -39,6 +39,7 @@ import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedM
import com.gemstone.gemfire.internal.Assert;
import com.gemstone.gemfire.internal.DataSerializableFixedID;
import com.gemstone.gemfire.internal.HeapDataOutputStream;
+import com.gemstone.gemfire.internal.InternalDataSerializer;
import com.gemstone.gemfire.internal.Version;
import com.gemstone.gemfire.internal.VersionedDataInputStream;
import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
@@ -101,10 +102,6 @@ public final class ClientProxyMembershipID
protected int uniqueId;
- //Version information is not available during the handshake
- //see comments in HandShake.write()
- private transient static final Version clientVersion = Version.GFE_82;
-
// private final String proxyIDStr;
// private final String clientIdStr ;
@@ -353,14 +350,13 @@ public final class ClientProxyMembershipID
public void fromData(DataInput in) throws IOException, ClassNotFoundException
{
-
this.identity = DataSerializer.readByteArray(in);
this.uniqueId = in.readInt();
// {toString(); this.transientPort = ((InternalDistributedMember)this.memberId).getPort();}
}
public Version getClientVersion() {
- return this.clientVersion;
+ return ((InternalDistributedMember)getDistributedMember()).getVersionObject();
}
public String getDSMembership()
@@ -405,15 +401,12 @@ public final class ClientProxyMembershipID
public DistributedMember getDistributedMember() {
if (memberId == null) {
ByteArrayInputStream bais = new ByteArrayInputStream(identity);
- DataInputStream dis = new VersionedDataInputStream(bais, clientVersion);
+ DataInputStream dis = new VersionedDataInputStream(bais, Version.CURRENT);
try {
memberId = (DistributedMember)DataSerializer.readObject(dis);
}
catch (Exception e) {
- DistributedSystem ds = InternalDistributedSystem.getAnyInstance();
- if(ds != null){
- logger.error(LocalizedMessage.create(LocalizedStrings.ClientProxyMembershipID_UNABLE_TO_DESERIALIZE_MEMBERSHIP_ID), e);
- }
+ logger.error(LocalizedMessage.create(LocalizedStrings.ClientProxyMembershipID_UNABLE_TO_DESERIALIZE_MEMBERSHIP_ID), e);
}
}
return memberId;
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f2a852d8/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/HandShake.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/HandShake.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/HandShake.java
index be3a7bf..100549a 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/HandShake.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/HandShake.java
@@ -1314,14 +1314,14 @@ public class HandShake implements ClientHandShake
//Successful handshake for GATEWAY_TO_GATEWAY mode sets the peer version in connection
if(communicationMode == Acceptor.GATEWAY_TO_GATEWAY && !
(acceptanceCode == REPLY_EXCEPTION_AUTHENTICATION_REQUIRED ||
- acceptanceCode == REPLY_EXCEPTION_AUTHENTICATION_FAILED)) {
- short wanSiteVersion = Version.readOrdinal(dis);
- conn.setWanSiteVersion(wanSiteVersion);
- // establish a versioned stream for the other site, if necessary
- if (wanSiteVersion < Version.CURRENT_ORDINAL) {
- dis = new VersionedDataInputStream(dis, Version.fromOrdinalOrCurrent(wanSiteVersion));
- }
- }
+ acceptanceCode == REPLY_EXCEPTION_AUTHENTICATION_FAILED)) {
+ short wanSiteVersion = Version.readOrdinal(dis);
+ conn.setWanSiteVersion(wanSiteVersion);
+ // establish a versioned stream for the other site, if necessary
+ if (wanSiteVersion < Version.CURRENT_ORDINAL) {
+ dis = new VersionedDataInputStream(dis, Version.fromOrdinalOrCurrent(wanSiteVersion));
+ }
+ }
// No need to check for return value since DataInputStream already throws
// EOFException in case of EOF
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f2a852d8/gemfire-core/src/test/java/com/gemstone/gemfire/cache/client/ClientCacheFactoryJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/cache/client/ClientCacheFactoryJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/cache/client/ClientCacheFactoryJUnitTest.java
index d15863b..6c19018 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/cache/client/ClientCacheFactoryJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/cache/client/ClientCacheFactoryJUnitTest.java
@@ -20,6 +20,8 @@ package com.gemstone.gemfire.cache.client;
import static org.junit.Assert.*;
import static org.junit.runners.MethodSorters.*;
+import java.io.ByteArrayInputStream;
+import java.io.DataInputStream;
import java.io.File;
import java.net.InetAddress;
import java.net.InetSocketAddress;
@@ -28,20 +30,28 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Properties;
+import org.jgroups.util.UUID;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.experimental.categories.Category;
+import com.gemstone.gemfire.DataSerializer;
import com.gemstone.gemfire.cache.RegionService;
import com.gemstone.gemfire.cache.client.internal.ProxyCache;
import com.gemstone.gemfire.cache.client.internal.UserAttributes;
import com.gemstone.gemfire.cache.server.CacheServer;
import com.gemstone.gemfire.distributed.DistributedSystem;
import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
+import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedMember;
+import com.gemstone.gemfire.distributed.internal.membership.gms.GMSMember;
import com.gemstone.gemfire.internal.FileUtil;
+import com.gemstone.gemfire.internal.HeapDataOutputStream;
+import com.gemstone.gemfire.internal.Version;
+import com.gemstone.gemfire.internal.VersionedDataInputStream;
import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
+import com.gemstone.gemfire.internal.cache.tier.sockets.ClientProxyMembershipID;
import com.gemstone.gemfire.pdx.ReflectionBasedAutoSerializer;
import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
@@ -290,4 +300,44 @@ public class ClientCacheFactoryJUnitTest {
.setPdxSerializer(new ReflectionBasedAutoSerializer())
.create();
}
+
+ @Test
+ public void testOldClientIDDeserialization() throws Exception {
+ // during a HandShake a clientID is read w/o knowing the client's
+ // version
+ cc = new ClientCacheFactory().create();
+ GemFireCacheImpl gfc = (GemFireCacheImpl)cc;
+ InternalDistributedMember memberID = (InternalDistributedMember)cc.getDistributedSystem().getDistributedMember();
+ GMSMember gmsID = (GMSMember)memberID.getNetMember();
+ memberID.setVersionObjectForTest(Version.GFE_82);
+ assertEquals(Version.GFE_82, memberID.getVersionObject());
+ ClientProxyMembershipID clientID = ClientProxyMembershipID.getClientId(memberID);
+ HeapDataOutputStream out = new HeapDataOutputStream(Version.GFE_82);
+ DataSerializer.writeObject(clientID, out);
+
+ DataInputStream in = new VersionedDataInputStream(new ByteArrayInputStream(out.toByteArray()), Version.CURRENT);
+ ClientProxyMembershipID newID = DataSerializer.readObject(in);
+ InternalDistributedMember newMemberID = (InternalDistributedMember)newID.getDistributedMember();
+ assertEquals(Version.GFE_82, newMemberID.getVersionObject());
+ assertEquals(Version.GFE_82, newID.getClientVersion());
+ GMSMember newGmsID = (GMSMember)newMemberID.getNetMember();
+ assertEquals(0, newGmsID.getUuidLSBs());
+ assertEquals(0, newGmsID.getUuidMSBs());
+
+ gmsID.setUUID(new UUID(1234l, 5678l));
+ memberID.setVersionObjectForTest(Version.CURRENT);
+ clientID = ClientProxyMembershipID.getClientId(memberID);
+ out = new HeapDataOutputStream(Version.CURRENT);
+ DataSerializer.writeObject(clientID, out);
+
+ in = new VersionedDataInputStream(new ByteArrayInputStream(out.toByteArray()), Version.CURRENT);
+ newID = DataSerializer.readObject(in);
+ newMemberID = (InternalDistributedMember)newID.getDistributedMember();
+ assertEquals(Version.CURRENT, newMemberID.getVersionObject());
+ assertEquals(Version.CURRENT, newID.getClientVersion());
+ newGmsID = (GMSMember)newMemberID.getNetMember();
+ assertEquals(gmsID.getUuidLSBs(), newGmsID.getUuidLSBs());
+ assertEquals(gmsID.getUuidMSBs(), newGmsID.getUuidMSBs());
+
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f2a852d8/gemfire-core/src/test/resources/com/gemstone/gemfire/codeAnalysis/sanctionedDataSerializables.txt
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/resources/com/gemstone/gemfire/codeAnalysis/sanctionedDataSerializables.txt b/gemfire-core/src/test/resources/com/gemstone/gemfire/codeAnalysis/sanctionedDataSerializables.txt
index d553ad9..d3a141a 100644
--- a/gemfire-core/src/test/resources/com/gemstone/gemfire/codeAnalysis/sanctionedDataSerializables.txt
+++ b/gemfire-core/src/test/resources/com/gemstone/gemfire/codeAnalysis/sanctionedDataSerializables.txt
@@ -329,12 +329,12 @@ fromData,16,2a2bb700172a2bb900180100b50008b1
toData,16,2a2bb700192b2ab40008b9001a0200b1
com/gemstone/gemfire/distributed/internal/membership/InternalDistributedMember,6
-fromData,29,2a2bb600992ab4001ab2008fb6006fa1000d2ab400282bb900900200b1
-fromDataPre_GFE_7_1_0_0,292,2bb8009a4d2bb9009b01003e2a2bb80087b500062ab2000399000e2c2ab40006b8009ca700072cb60007b500062bb9009d010036041504047e99000704a700040336051504057e99000704a700040336062a1504077e99000704a7000403b500382a2bb9009b0100b500102a2bb9009b0100b500022a2bb9009d0100b500122a2bb80089b5001f2a2bb80087b500172ab40012100da0000e2a2bb80087b50018a700172bb800873a071907c6000c2a1907b8009eb500132bb800873a072bb8008ab6008b36082abb008c5919071508b7008db5001dbb0032592ab400102ab400022ab400122ab400132ab400172ab4001f2ab4001db700333a092a2c1d150515062bb8009fb6006f1909b80027b500282ab7000b2ab400129e000704a7000403b80041b1
-fromDataPre_GFE_9_0_0_0,296,2bb8009a4d2bb9009b01003e2a2bb80087b500062ab2000399000e2c2ab40006b8009ca700072cb60007b500062bb9009d010036041504047e99000704a700040336051504057e99000704a700040336062a1504077e99000704a7000403b500382a2bb9009b0100b500102a2bb9009b0100b500022a2bb9009d0100b500122a2bb80089b5001f2a2bb80087b500172ab40012100da0000e2a2bb80087b50018a700172bb800873a071907c6000c2a1907b8009eb500132bb800873a072bb8008ab6008b36082abb008c5919071508b7008db5001d2a15042bb7008ebb0032592ab400102ab400022ab400122ab400132ab400172ab4001f2ab4001db700333a092a2c1d150515062ab4001a1909b80027b500282ab7000b2ab400129e000704a7000403b80041b1
-toData,29,2a2bb600932ab4001ab2008fb6006fa1000d2ab600942bb900830200b1
-toDataPre_GFE_7_1_0_0,226,2ab400129e000704a7000403b800412ab6004d2bb800952b2ab6004cb9009602002ab400062bb8007a033d2ab40028b9007b01009900071c04803d2ab40028b9006a01009900071c05803d2ab400389900071c07803d2b1c1100ff7e91b9009702002b2ab40010b9009602002b2ab40002b9009602002b2ab40012b9009702002ab4001f2bb8007d2ab400172bb8007a2ab40012100da0000e2ab400182bb8007aa7000e2ab40013b800982bb8007a2ab4001dc700081245a7000a2ab4001db6007e2bb8007a2ab4001dc7000911012ca7000a2ab4001db6007fb800802bb80081b1
-toDataPre_GFE_9_0_0_0,240,2ab400129e000704a7000403b800412ab6004d2bb800952b2ab6004cb9009602002ab400062bb8007a033d2ab40028b9007b01009900071c04803d2ab40028b9006a01009900071c05803d2ab400389900071c07803d1c1008803d2b1c1100ff7e91b9009702002b2ab40010b9009602002b2ab40002b9009602002b2ab40012b9009702002ab4001f2bb8007d2ab400172bb8007a2ab40012100da0000e2ab400182bb8007aa7000e2ab40013b800982bb8007a2ab4001dc700081245a7000a2ab4001db6007e2bb8007a2ab4001dc7000911012ca7000a2ab4001db6007fb800802bb800812b2ab4001a04b80082b1
+fromData,33,2a2bb6009a2ab4001ab20090b60070a100112ab400282bb900910200a700044db1
+fromDataPre_GFE_7_1_0_0,292,2bb8009b4d2bb9009c01003e2a2bb80088b500062ab2000399000e2c2ab40006b8009da700072cb60007b500062bb9009e010036041504047e99000704a700040336051504057e99000704a700040336062a1504077e99000704a7000403b500392a2bb9009c0100b500102a2bb9009c0100b500022a2bb9009e0100b500122a2bb8008ab5001f2a2bb80088b500172ab40012100da0000e2a2bb80088b50018a700172bb800883a071907c6000c2a1907b8009fb500132bb800883a072bb8008bb6008c36082abb008d5919071508b7008eb5001dbb0033592ab400102ab400022ab400122ab400132ab400172ab4001f2ab4001db700343a092a2c1d150515062bb800a0b600701909b80027b500282ab7000b2ab400129e000704a7000403b80042b1
+fromDataPre_GFE_9_0_0_0,296,2bb8009b4d2bb9009c01003e2a2bb80088b500062ab2000399000e2c2ab40006b8009da700072cb60007b500062bb9009e010036041504047e99000704a700040336051504057e99000704a700040336062a1504077e99000704a7000403b500392a2bb9009c0100b500102a2bb9009c0100b500022a2bb9009e0100b500122a2bb8008ab5001f2a2bb80088b500172ab40012100da0000e2a2bb80088b50018a700172bb800883a071907c6000c2a1907b8009fb500132bb800883a072bb8008bb6008c36082abb008d5919071508b7008eb5001d2a15042bb7008fbb0033592ab400102ab400022ab400122ab400132ab400172ab4001f2ab4001db700343a092a2c1d150515062ab4001a1909b80027b500282ab7000b2ab400129e000704a7000403b80042b1
+toData,29,2a2bb600942ab4001ab20090b60070a1000d2ab600952bb900840200b1
+toDataPre_GFE_7_1_0_0,226,2ab400129e000704a7000403b800422ab6004e2bb800962b2ab6004db9009702002ab400062bb8007b033d2ab40028b9007c01009900071c04803d2ab40028b9006b01009900071c05803d2ab400399900071c07803d2b1c1100ff7e91b9009802002b2ab40010b9009702002b2ab40002b9009702002b2ab40012b9009802002ab4001f2bb8007e2ab400172bb8007b2ab40012100da0000e2ab400182bb8007ba7000e2ab40013b800992bb8007b2ab4001dc700081246a7000a2ab4001db6007f2bb8007b2ab4001dc7000911012ca7000a2ab4001db60080b800812bb80082b1
+toDataPre_GFE_9_0_0_0,240,2ab400129e000704a7000403b800422ab6004e2bb800962b2ab6004db9009702002ab400062bb8007b033d2ab40028b9007c01009900071c04803d2ab40028b9006b01009900071c05803d2ab400399900071c07803d1c1008803d2b1c1100ff7e91b9009802002b2ab40010b9009702002b2ab40002b9009702002b2ab40012b9009802002ab4001f2bb8007e2ab400172bb8007b2ab40012100da0000e2ab400182bb8007ba7000e2ab40013b800992bb8007b2ab4001dc700081246a7000a2ab4001db6007f2bb8007b2ab4001dc7000911012ca7000a2ab4001db60080b800812bb800822b2ab4001a04b80083b1
com/gemstone/gemfire/distributed/internal/membership/MemberAttributes,2
fromData,73,2a2bb900270100b500022a2bb900270100b500032a2bb900270100b500042a2bb80028b500092a2bb80029b500072bb800284d2bb8002ab6002b3e2abb002c592c1db7002db5000ab1