Repository: incubator-geode Updated Branches: refs/heads/feature/GEODE-77 9d110301f -> b4d083e4c
GEODE-77 handling messages from old GemFire clients Message objects were not passing on their version information to Part objects, causing deserialization errors when servers were being used by old GemFire clients. Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/b4d083e4 Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/b4d083e4 Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/b4d083e4 Branch: refs/heads/feature/GEODE-77 Commit: b4d083e4cc6616199a2f6751f49a0686c9d28570 Parents: 9d11030 Author: Bruce Schuchardt <[email protected]> Authored: Thu Oct 22 09:02:27 2015 -0700 Committer: Bruce Schuchardt <[email protected]> Committed: Thu Oct 22 09:02:27 2015 -0700 ---------------------------------------------------------------------- .../membership/gms/membership/GMSJoinLeave.java | 2 +- .../cache/tier/sockets/BaseCommand.java | 1 + .../internal/cache/tier/sockets/Message.java | 23 ++++++++++++-------- .../internal/cli/result/ResultBuilder.java | 0 4 files changed, 16 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/b4d083e4/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java index 3f85cda..57611e6 100755 --- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java +++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java @@ -1904,7 +1904,7 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler { @Override public Thread newThread(Runnable r) { return new Thread(Services.getThreadGroup(), r, - "Member verification thread " + i.incrementAndGet()); + "GemFire View Creator verification thread " + i.incrementAndGet()); } }); http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/b4d083e4/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/BaseCommand.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/BaseCommand.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/BaseCommand.java index 5e35ce4..e0181ee 100755 --- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/BaseCommand.java +++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/BaseCommand.java @@ -369,6 +369,7 @@ public abstract class BaseCommand implements Command { new Object[] {servConn.getName(), servConn.getModRegion(), servConn.getModKey(), Integer.valueOf(transId)})); } else { + logger.debug("EOF exception", eof); logger.info(LocalizedMessage.create( LocalizedStrings.BaseCommand_0_CONNECTION_DISCONNECT_DETECTED_BY_EOF, servConn.getName())); http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/b4d083e4/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/Message.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/Message.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/Message.java index b274ec5..e418320 100755 --- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/Message.java +++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/Message.java @@ -136,13 +136,13 @@ public class Message { // Tentative workaround to avoid OOM stated in #46754. public static final ThreadLocal<Integer> messageType = new ThreadLocal<Integer>(); - Version destVersion; + Version version; /** * Creates a new message with the given number of parts */ public Message(int numberOfParts, Version destVersion) { - this.destVersion = destVersion; + this.version = destVersion; Assert.assertTrue(destVersion != null, "Attempt to create an unversioned message"); partsList = new Part[numberOfParts]; this.numberOfParts = numberOfParts; @@ -169,7 +169,7 @@ public class Message { } public void setVersion(Version clientVersion) { - this.destVersion = clientVersion; + this.version = clientVersion; } /** @@ -332,8 +332,8 @@ public class Message { private void serializeAndAddPartNoCopying(Object o) { HeapDataOutputStream hdos; - Version v = destVersion; - if (destVersion.equals(Version.CURRENT)){ + Version v = version; + if (version.equals(Version.CURRENT)){ v = null; } // create the HDOS with a flag telling it that it can keep any byte[] or ByteBuffers/ByteSources passed to it. @@ -380,8 +380,8 @@ public class Message { // addRawPart(b, true); } else { HeapDataOutputStream hdos; - Version v = destVersion; - if (destVersion.equals(Version.CURRENT)){ + Version v = version; + if (version.equals(Version.CURRENT)){ v = null; } hdos = new HeapDataOutputStream(chunkSize, v); @@ -449,8 +449,13 @@ public class Message { } public Part getPart(int index) { - if (index < this.numberOfParts) - return partsList[index]; + if (index < this.numberOfParts) { + Part p = partsList[index]; + if (this.version != null) { + p.setVersion(this.version); + } + return p; + } return null; } http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/b4d083e4/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/cli/result/ResultBuilder.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/cli/result/ResultBuilder.java b/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/cli/result/ResultBuilder.java old mode 100644 new mode 100755
