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