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/11/20 22:01:59 UTC

[05/50] [abbrv] incubator-geode git commit: GEODE-77: proper deserialization of old member IDs

GEODE-77: proper deserialization of old member IDs

Member IDs from old GemFire clients (which we'd like to be compatible
with Geode) were not being properly deserialized, so that they did not
know what version their member was using.  This caused deserialization
errors when the IDs were transmitted from one Geode server to another.
The fix is to look for the member's version in the DataInput parameter
in fromData()


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/8ff8ede7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/8ff8ede7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/8ff8ede7

Branch: refs/heads/develop
Commit: 8ff8ede79705d9333f6165e9015de3f3a269c576
Parents: f3b1f1b
Author: Bruce Schuchardt <bs...@pivotal.io>
Authored: Tue Oct 20 11:28:52 2015 -0700
Committer: Bruce Schuchardt <bs...@pivotal.io>
Committed: Tue Oct 20 11:28:52 2015 -0700

----------------------------------------------------------------------
 .../internal/membership/InternalDistributedMember.java   | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8ff8ede7/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 ad9e4b4..f5c57b6 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
@@ -811,6 +811,13 @@ public final class InternalDistributedMember
     if ((flags & VERSION_MASK) != 0) {
       this.version = Version.readOrdinal(in);
       this.versionObj = Version.fromOrdinalNoThrow(this.version, false);
+    } else {
+      // prior to 7.1 member IDs did not serialize their version information
+      Version v = InternalDataSerializer.getVersionForDataStreamOrNull(in);
+      if (v != null) {
+        this.versionObj = v;
+        this.version = v.ordinal();
+      }
     }
   }
 
@@ -907,7 +914,9 @@ public final class InternalDistributedMember
 
   public void toData(DataOutput out) throws IOException {
     toDataPre_GFE_9_0_0_0(out);
-    getNetMember().writeAdditionalData(out);
+    if (this.version >= Version.GFE_90.ordinal()) {
+      getNetMember().writeAdditionalData(out);
+    }
   }