You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by hi...@apache.org on 2016/08/29 21:39:25 UTC
[23/24] incubator-geode git commit: GEODE-1372 Fixed review comments.
GEODE-1372 Fixed review comments.
Added api docs. Removed statis in GMSEncrpt and made that functionality
in GMSLocator. Added system property for #of encryptors. Fixed test
issue
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/5cb50091
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/5cb50091
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/5cb50091
Branch: refs/heads/develop
Commit: 5cb50091a801b2dfd1b71747d946027a7efcaafc
Parents: 9f7091f
Author: Hitesh Khamesra <hk...@pivotal.io>
Authored: Mon Aug 29 10:36:38 2016 -0700
Committer: Hitesh Khamesra <hk...@pivotal.io>
Committed: Mon Aug 29 10:39:19 2016 -0700
----------------------------------------------------------------------
.../distributed/ConfigurationProperties.java | 6 +-
.../membership/InternalDistributedMember.java | 28 +++++++
.../internal/membership/MemberFactory.java | 1 -
.../internal/membership/MemberServices.java | 1 -
.../internal/membership/gms/GMSMember.java | 19 +----
.../internal/membership/gms/Services.java | 8 ++
.../membership/gms/interfaces/JoinLeave.java | 2 -
.../membership/gms/interfaces/Messenger.java | 28 ++++++-
.../membership/gms/locator/GMSLocator.java | 21 ++++--
.../membership/gms/membership/GMSJoinLeave.java | 35 ++++-----
.../membership/gms/messenger/GMSEncrypt.java | 78 ++++++--------------
.../gms/messenger/JGroupsMessenger.java | 63 +++-------------
.../messenger/JGroupsMessengerJUnitTest.java | 6 +-
.../sanctionedDataSerializables.txt | 6 +-
14 files changed, 144 insertions(+), 158 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5cb50091/geode-core/src/main/java/com/gemstone/gemfire/distributed/ConfigurationProperties.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/ConfigurationProperties.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/ConfigurationProperties.java
index aaad75e..e02f470 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/ConfigurationProperties.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/ConfigurationProperties.java
@@ -1203,7 +1203,11 @@ public interface ConfigurationProperties {
String SECURITY_CLIENT_DHALGO = SECURITY_PREFIX + "client-dhalgo";
/**
* The static String definition of the <i>"security-udp-dhalgo"</i>
- * property
+ * property. Application can set this property to valid symmetric key
+ * algorithm, to encrypt udp messages in Geode. Geode will generate
+ * symmetric key using Diffie-Hellman key exchange algorithm between
+ * peers. That key further used by specified algorithm to encrypt the
+ * udp messages.
*/
String SECURITY_UDP_DHALGO = SECURITY_PREFIX + "udp-dhalgo";
/**
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5cb50091/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/InternalDistributedMember.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/InternalDistributedMember.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/InternalDistributedMember.java
index 54a0997..ead2c89 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/InternalDistributedMember.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/InternalDistributedMember.java
@@ -1293,4 +1293,32 @@ public class InternalDistributedMember
return size;
}
+
+ public static class InternalDistributedMemberWrapper {
+ InternalDistributedMember mbr;
+
+ public InternalDistributedMemberWrapper(InternalDistributedMember m) {
+ this.mbr = m;
+ }
+
+ public InternalDistributedMember getMbr() {
+ return mbr;
+ }
+
+ @Override
+ public int hashCode() {
+ return mbr.hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ InternalDistributedMember other = ((InternalDistributedMemberWrapper)obj).mbr;
+ return mbr.compareTo(other, false, false) == 0;
+ }
+
+ @Override
+ public String toString() {
+ return "InternalDistrubtedMemberWrapper [mbr=" + mbr + "]";
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5cb50091/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MemberFactory.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MemberFactory.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MemberFactory.java
index 1f4751b..f10731b 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MemberFactory.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MemberFactory.java
@@ -95,7 +95,6 @@ public class MemberFactory {
/**
* currently this is a test method but it ought to be used by InternalLocator
* to create the peer location TcpHandler
- * @param securityUDPDHAlgo TODO
*/
static public NetLocator newLocatorHandler(InetAddress bindAddress,
File stateFile,
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5cb50091/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MemberServices.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MemberServices.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MemberServices.java
index 236ac43..235373f 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MemberServices.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MemberServices.java
@@ -81,7 +81,6 @@ public interface MemberServices {
/**
* currently this is a test method but it ought to be used by InternalLocator
* to create the peer location TcpHandler
- * @param securityUDPDHAlgo TODO
*/
public abstract NetLocator newLocatorHandler(InetAddress bindAddress,
File stateFile, String locatorString, boolean usePreferredCoordinators,
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5cb50091/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMember.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMember.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMember.java
index b7754ce..969933b 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMember.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMember.java
@@ -407,7 +407,7 @@ public class GMSMember implements NetMember, DataSerializableFixedID {
@Override
public void toData(DataOutput out) throws IOException {
- writeShallowData(out);
+ writeEssentialData(out);
out.writeInt(directPort);
out.writeByte(memberWeight);
out.writeByte(vmKind);
@@ -417,7 +417,7 @@ public class GMSMember implements NetMember, DataSerializableFixedID {
DataSerializer.writeStringArray(groups, out);
}
- public void writeShallowData(DataOutput out) throws IOException {
+ public void writeEssentialData(DataOutput out) throws IOException {
Version.writeOrdinal(out, this.versionOrdinal, true);
int flags = 0;
@@ -435,7 +435,7 @@ public class GMSMember implements NetMember, DataSerializableFixedID {
@Override
public void fromData(DataInput in) throws IOException, ClassNotFoundException {
- readShallowData(in);
+ readEssentialData(in);
this.directPort = in.readInt();
this.memberWeight = in.readByte();
this.vmKind = in.readByte();
@@ -445,7 +445,7 @@ public class GMSMember implements NetMember, DataSerializableFixedID {
this.groups = DataSerializer.readStringArray(in);
}
- public void readShallowData(DataInput in) throws IOException, ClassNotFoundException {
+ public void readEssentialData(DataInput in) throws IOException, ClassNotFoundException {
this.versionOrdinal = Version.readOrdinal(in);
int flags = in.readShort();
@@ -473,15 +473,4 @@ public class GMSMember implements NetMember, DataSerializableFixedID {
this.uuidLSBs = in.readLong();
memberWeight = (byte)(in.readByte() & 0xFF);
}
-
- public static void writeShallowNetMember(GMSMember mbr, DataOutput out) throws IOException {
- mbr.writeShallowData(out);
- }
-
- public static GMSMember readShallowNetMember(DataInput in) throws ClassNotFoundException, IOException {
- GMSMember mbr = new GMSMember();
- mbr.readShallowData(in);
-
- return mbr;
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5cb50091/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/Services.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/Services.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/Services.java
index 5bc006f..9ff1636 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/Services.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/Services.java
@@ -29,6 +29,7 @@ import com.gemstone.gemfire.distributed.internal.membership.NetView;
import com.gemstone.gemfire.distributed.internal.membership.gms.auth.GMSAuthenticator;
import com.gemstone.gemfire.distributed.internal.membership.gms.fd.GMSHealthMonitor;
import com.gemstone.gemfire.distributed.internal.membership.gms.interfaces.*;
+import com.gemstone.gemfire.distributed.internal.membership.gms.locator.GMSLocator;
import com.gemstone.gemfire.distributed.internal.membership.gms.membership.GMSJoinLeave;
import com.gemstone.gemfire.distributed.internal.membership.gms.messenger.JGroupsMessenger;
import com.gemstone.gemfire.distributed.internal.membership.gms.mgr.GMSMembershipManager;
@@ -357,6 +358,13 @@ public class Services {
return !getConfig().getDistributionConfig().getDisableAutoReconnect();
}
+ public byte[] getPublicKey(InternalDistributedMember mbr) {
+ if(locator != null) {
+ return ((GMSLocator)locator).getPublicKey(mbr);
+ }
+ return null;
+ }
+
public class Stopper extends CancelCriterion {
volatile String reasonForStopping = null;
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5cb50091/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/interfaces/JoinLeave.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/interfaces/JoinLeave.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/interfaces/JoinLeave.java
index 3bacaf4..202a125 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/interfaces/JoinLeave.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/interfaces/JoinLeave.java
@@ -20,7 +20,6 @@ import com.gemstone.gemfire.distributed.DistributedMember;
import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedMember;
import com.gemstone.gemfire.distributed.internal.membership.NetMember;
import com.gemstone.gemfire.distributed.internal.membership.NetView;
-import com.gemstone.gemfire.distributed.internal.membership.gms.GMSMember;
public interface JoinLeave extends Service {
@@ -53,7 +52,6 @@ public interface JoinLeave extends Service {
/**
* Get "InternalDistributedMember" from current view or prepared view.
- *
*/
InternalDistributedMember getMemberID(NetMember m);
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5cb50091/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/interfaces/Messenger.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/interfaces/Messenger.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/interfaces/Messenger.java
index 3e9a2dc..18f1529 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/interfaces/Messenger.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/interfaces/Messenger.java
@@ -87,15 +87,41 @@ public interface Messenger extends Service {
*/
void waitForMessageState(InternalDistributedMember member, Map state) throws InterruptedException;
- byte[] getPublickey(InternalDistributedMember mbr);
+ /**
+ * Get the public key of member.
+ * @param mbr
+ * @return
+ */
+ byte[] getPublicKey(InternalDistributedMember mbr);
+
+ /**
+ * Set public key of member.
+ * @param publickey
+ * @param mbr
+ */
void setPublicKey(byte[] publickey, InternalDistributedMember mbr);
+ /**
+ * Set cluster key in local member.Memebr calls when it gets cluster key in join response
+ * @param clusterSecretKey
+ */
void setClusterSecretKey(byte[] clusterSecretKey);
+ /**
+ * To retrieve the cluster key. This needs to send cluster key to new memebr.
+ * @return
+ */
byte[] getClusterSecretKey();
+ /**
+ * To set requestId in request. This requestId comes back in response to match the request.
+ * @return
+ */
int getRequestId();
+ /**
+ * Initialize the cluster key, this happens when member becomes coordinator.
+ */
void initClusterKey();
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5cb50091/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/locator/GMSLocator.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/locator/GMSLocator.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/locator/GMSLocator.java
index 44e5ce8..69a1f60 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/locator/GMSLocator.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/locator/GMSLocator.java
@@ -30,7 +30,9 @@ import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
import com.gemstone.gemfire.InternalGemFireException;
@@ -45,11 +47,11 @@ import com.gemstone.gemfire.distributed.internal.SharedConfiguration;
import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedMember;
import com.gemstone.gemfire.distributed.internal.membership.MembershipManager;
import com.gemstone.gemfire.distributed.internal.membership.NetView;
+import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedMember.InternalDistributedMemberWrapper;
import com.gemstone.gemfire.distributed.internal.membership.gms.GMSUtil;
import com.gemstone.gemfire.distributed.internal.membership.gms.NetLocator;
import com.gemstone.gemfire.distributed.internal.membership.gms.Services;
import com.gemstone.gemfire.distributed.internal.membership.gms.interfaces.Locator;
-import com.gemstone.gemfire.distributed.internal.membership.gms.messenger.GMSEncrypt;
import com.gemstone.gemfire.distributed.internal.membership.gms.mgr.GMSMembershipManager;
import com.gemstone.gemfire.distributed.internal.tcpserver.TcpClient;
import com.gemstone.gemfire.distributed.internal.tcpserver.TcpServer;
@@ -75,6 +77,7 @@ public class GMSLocator implements Locator, NetLocator {
private InternalDistributedMember localAddress;
private final Set<InternalDistributedMember> registrants = new HashSet<>();
+ public Map<InternalDistributedMemberWrapper, byte[]> registerMbrVsPK = new ConcurrentHashMap<>();
/**
* The current membership view, or one recovered from disk.
@@ -91,7 +94,7 @@ public class GMSLocator implements Locator, NetLocator {
* @param usePreferredCoordinators true if the membership coordinator should be a Locator
* @param networkPartitionDetectionEnabled true if network partition detection is enabled
* @param stats the locator statistics object
- * @param securityUDPDHAlgo TODO
+ * @param securityUDPDHAlgo DF algorithm
*/
public GMSLocator( InetAddress bindAddress,
File stateFile,
@@ -185,7 +188,8 @@ public class GMSLocator implements Locator, NetLocator {
if(services != null) {
services.getMessenger().setPublicKey(findRequest.getMyPublicKey(), findRequest.getMemberID());
} else {
- GMSEncrypt.registerMember(findRequest.getMyPublicKey(), findRequest.getMemberID());
+ //GMSEncrypt.registerMember(findRequest.getMyPublicKey(), findRequest.getMemberID());
+ registerMbrVsPK.put(new InternalDistributedMemberWrapper(findRequest.getMemberID()), findRequest.getMyPublicKey());
}
if (findRequest.getMemberID() != null) {
InternalDistributedMember coord = null;
@@ -252,9 +256,10 @@ public class GMSLocator implements Locator, NetLocator {
}
if (coordPk == null) {
if(services != null){
- coordPk = services.getMessenger().getPublickey(coord);
+ coordPk = services.getMessenger().getPublicKey(coord);
} else {
- coordPk = GMSEncrypt.getRegisteredPublicKey(coord);
+ //coordPk = GMSEncrypt.getRegisteredPublicKey(coord);
+ coordPk = registerMbrVsPK.get(new InternalDistributedMemberWrapper(coord));
}
}
response = new FindCoordinatorResponse(coord, localAddress,
@@ -308,10 +313,14 @@ public class GMSLocator implements Locator, NetLocator {
stats.endLocatorResponse(startTime);
}
+ public byte[] getPublicKey(InternalDistributedMember mbr) {
+ return registerMbrVsPK.get(new InternalDistributedMemberWrapper(mbr));
+ }
+
@Override
public void shutDown() {
// nothing to do for GMSLocator
- GMSEncrypt.clear();
+ registerMbrVsPK.clear();
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5cb50091/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java
index 5f4a6e6..1c6cf16 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java
@@ -847,7 +847,7 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
pendingRemovals.removeAll(view.getCrashedMembers());
viewReplyProcessor.initialize(id, responders);
viewReplyProcessor.processPendingRequests(pendingLeaves, pendingRemovals);
- addPublickeysToView(view);
+ addPublicKeysToView(view);
services.getMessenger().send(msg);
// only wait for responses during preparation
@@ -875,8 +875,7 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
return true;
}
- private void addPublickeysToView(NetView view) {
- //TODO: is this check is correct
+ private void addPublicKeysToView(NetView view) {
String sDHAlgo = services.getConfig().getDistributionConfig().getSecurityUDPDHAlgo();
if (sDHAlgo != null && !sDHAlgo.isEmpty()) {
List<InternalDistributedMember> mbrs = view.getMembers();
@@ -884,7 +883,7 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
while (itr.hasNext()) {
InternalDistributedMember mbr = itr.next();
- byte[] pk = services.getMessenger().getPublickey(mbr);
+ byte[] pk = services.getMessenger().getPublicKey(mbr);
view.setPublicKey(mbr, pk);
}
}
@@ -893,7 +892,10 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
NetView view = m.getView();
+ //If our current view doesn't contaion sender then we wanrt to ignore that view.
if(currentView != null && !currentView.contains(m.getSender())) {
+ //but if preparedView contains sender then we don't want to ignore that view.
+ //this may happen when we locator re-join and it take over coordinator's responsibility.
if(this.preparedView == null || !this.preparedView.contains(m.getSender()))
{
logger.info("Ignoring the view {} from member {}, which is not in my current view {} ", view, m.getSender(), currentView);
@@ -994,7 +996,7 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
String dhalgo = services.getConfig().getDistributionConfig().getSecurityUDPDHAlgo();
FindCoordinatorRequest request = new FindCoordinatorRequest(this.localAddress, state.alreadyTried, state.viewId,
- services.getMessenger().getPublickey(localAddress), services.getMessenger().getRequestId(), dhalgo);
+ services.getMessenger().getPublicKey(localAddress), services.getMessenger().getRequestId(), dhalgo);
Set<InternalDistributedMember> possibleCoordinators = new HashSet<InternalDistributedMember>();
Set<InternalDistributedMember> coordinatorsWithView = new HashSet<InternalDistributedMember>();
@@ -1128,17 +1130,19 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
String dhalgo = services.getConfig().getDistributionConfig().getSecurityUDPDHAlgo();
if (!dhalgo.isEmpty()) {
+ //Here we are sending message one-by-one to all recipients as we don't have cluster secret key yet.
+ //Usually this happens when locator re-joins the cluster and it has saved view.
for (InternalDistributedMember mbr : v.getMembers()) {
Set<InternalDistributedMember> r = new HashSet<>();
r.add(mbr);
- FindCoordinatorRequest req = new FindCoordinatorRequest(localAddress, state.alreadyTried, state.viewId, services.getMessenger().getPublickey(
+ FindCoordinatorRequest req = new FindCoordinatorRequest(localAddress, state.alreadyTried, state.viewId, services.getMessenger().getPublicKey(
localAddress), services.getMessenger().getRequestId(), dhalgo);
req.setRecipients(r);
services.getMessenger().send(req, v);
}
} else {
- FindCoordinatorRequest req = new FindCoordinatorRequest(localAddress, state.alreadyTried, state.viewId, services.getMessenger().getPublickey(
+ FindCoordinatorRequest req = new FindCoordinatorRequest(localAddress, state.alreadyTried, state.viewId, services.getMessenger().getPublicKey(
localAddress), services.getMessenger().getRequestId(), dhalgo);
req.setRecipients(v.getMembers());
@@ -1229,10 +1233,10 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
if (this.isJoined) {
NetView v = currentView;
resp = new FindCoordinatorResponse(v.getCoordinator(), localAddress,
- services.getMessenger().getPublickey(v.getCoordinator()), req.getRequestId());
+ services.getMessenger().getPublicKey(v.getCoordinator()), req.getRequestId());
} else {
resp = new FindCoordinatorResponse(localAddress, localAddress,
- services.getMessenger().getPublickey(localAddress), req.getRequestId());
+ services.getMessenger().getPublicKey(localAddress), req.getRequestId());
}
resp.setRecipient(req.getMemberID());
services.getMessenger().send(resp);
@@ -2074,13 +2078,11 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
viewRequests.clear();
}
-
+ NetView v = currentView;
for (DistributionMessage msg : requests) {
switch (msg.getDSFID()) {
- case JOIN_REQUEST:
-
- NetView v = currentView;
- logger.info("Informing to pending join requests {} myid {} coord {}", msg, localAddress, v.getCoordinator());
+ case JOIN_REQUEST:
+ logger.debug("Informing to pending join requests {} myid {} coord {}", msg, localAddress, v.getCoordinator());
if (!v.getCoordinator().equals(localAddress)) {
joinResponseSent = true;
//lets inform that coordinator has been changed
@@ -2226,9 +2228,6 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
return;
}
- //we already sent whrn we got join request
- //sendJoinResponses(newView, joinReqs);
-
// send removal messages before installing the view so we stop
// getting messages from members that have been kicked out
sendRemoveMessages(removalReqs, removalReasons, oldIDs);
@@ -2355,8 +2354,6 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
// we also send a join response so that information like the multicast message digest
// can be transmitted to the new members w/o including it in the view message
- //we already sent whrn we got join request
- //sendJoinResponses(newView, joinReqs);
if (markViewCreatorForShutdown && getViewCreator() != null) {
shutdown = true;
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5cb50091/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/GMSEncrypt.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/GMSEncrypt.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/GMSEncrypt.java
index ba049d2..6c41465 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/GMSEncrypt.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/GMSEncrypt.java
@@ -20,7 +20,6 @@ import java.math.BigInteger;
import java.security.*;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
-import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -34,13 +33,13 @@ import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedMember;
+import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedMember.InternalDistributedMemberWrapper;
import com.gemstone.gemfire.distributed.internal.membership.NetView;
import com.gemstone.gemfire.distributed.internal.membership.gms.Services;
import com.gemstone.gemfire.distributed.internal.DistributionConfig;
public class GMSEncrypt implements Cloneable {
-
- public static Map<GMSEncrypt.InternalDistributedMemberWrapper, byte[]> registrants = new ConcurrentHashMap<>();
+
public static long encodingsPerformed;
public static long decodingsPerformed;
@@ -73,11 +72,20 @@ public class GMSEncrypt implements Cloneable {
private NetView view;
- private int numberOfPeerEncryptorCopies = 10;
+ public static final int numberOfPeerEncryptorCopies = Integer.getInteger("GMSEncrypt.MAX_ENCRYPTORS", Math.max(Runtime.getRuntime().availableProcessors()*4, 16)).intValue();
+ /**
+ * Keeps multiple copies for peer
+ */
private ConcurrentHashMap<InternalDistributedMember, PeerEncryptor>[] copyOfPeerEncryptors;
- private ClusterEncryptor[] clusterEncryptors;
+ /**
+ * Keeps multiple copies of cluster keys
+ */
+ private ClusterEncryptor[] copyOfClusterEncryptors;
- private Map<GMSEncrypt.InternalDistributedMemberWrapper, byte[]> memberToPeerEncryptor = new ConcurrentHashMap<>();
+ /**
+ * it keeps PK for peers
+ */
+ private Map<InternalDistributedMemberWrapper, byte[]> memberToPeerEncryptor = new ConcurrentHashMap<>();
private ClusterEncryptor clusterEncryptor;
@@ -102,7 +110,6 @@ public class GMSEncrypt implements Cloneable {
}
protected synchronized void addClusterKey(byte[] secretBytes) {
- //TODO we are reseeting here, in case there is some race
this.clusterEncryptor = new ClusterEncryptor(secretBytes);
}
@@ -110,19 +117,8 @@ public class GMSEncrypt implements Cloneable {
initEncryptors();
}
- public static void registerMember(byte[] pk, InternalDistributedMember mbr) {
- if (pk != null) {
- registrants.put(new GMSEncrypt.InternalDistributedMemberWrapper(mbr), pk);
- }
- }
-
- public static void clear() {
- registrants.clear();
- }
-
- public static byte[] getRegisteredPublicKey(InternalDistributedMember mbr) {
- InternalDistributedMemberWrapper m = new InternalDistributedMemberWrapper(mbr);
- return registrants.get(m);
+ private byte[] getRegisteredPublicKey(InternalDistributedMember mbr) {
+ return services.getPublicKey(mbr);
}
public GMSEncrypt(Services services) throws Exception {
@@ -140,7 +136,7 @@ public class GMSEncrypt implements Cloneable {
void initEncryptors() {
copyOfPeerEncryptors = new ConcurrentHashMap[numberOfPeerEncryptorCopies];
- clusterEncryptors = new ClusterEncryptor[numberOfPeerEncryptorCopies];
+ copyOfClusterEncryptors = new ClusterEncryptor[numberOfPeerEncryptorCopies];
}
public byte[] decryptData(byte[] data, InternalDistributedMember member) throws Exception {
@@ -203,6 +199,7 @@ public class GMSEncrypt implements Cloneable {
GMSEncrypt gmsEncrypt = new GMSEncrypt();
gmsEncrypt.localMember = this.localMember;
gmsEncrypt.dhSKAlgo = this.dhSKAlgo;
+ gmsEncrypt.services = this.services;
X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(this.dhPublicKey.getEncoded());
KeyFactory keyFact = KeyFactory.getInstance("DH");
@@ -241,35 +238,7 @@ public class GMSEncrypt implements Cloneable {
dhPrivateKey = keypair.getPrivate();
dhPublicKey = keypair.getPublic();
}
- }
-
- static class InternalDistributedMemberWrapper {
- InternalDistributedMember mbr;
-
- public InternalDistributedMemberWrapper(InternalDistributedMember m) {
- this.mbr = m;
- }
-
- public InternalDistributedMember getMbr() {
- return mbr;
- }
-
- @Override
- public int hashCode() {
- return mbr.hashCode();
- }
-
- @Override
- public boolean equals(Object obj) {
- InternalDistributedMember other = ((InternalDistributedMemberWrapper)obj).mbr;
- return mbr.compareTo(other, false, false) == 0;
- }
-
- @Override
- public String toString() {
- return "InternalDistrubtedMemberWrapper [mbr=" + mbr + "]";
- }
- }
+ }
protected PeerEncryptor getPeerEncryptor(InternalDistributedMember member) throws Exception {
Map<InternalDistributedMember, PeerEncryptor> m = getPeerEncryptorMap();
@@ -309,14 +278,14 @@ public class GMSEncrypt implements Cloneable {
private ClusterEncryptor getClusterEncryptor() {
int h = Math.abs(Thread.currentThread().getName().hashCode() % numberOfPeerEncryptorCopies);
- ClusterEncryptor c = clusterEncryptors[h];
+ ClusterEncryptor c = copyOfClusterEncryptors[h];
if(c == null) {
- synchronized (copyOfPeerEncryptors) {
- c = clusterEncryptors[h];
+ synchronized (copyOfClusterEncryptors) {
+ c = copyOfClusterEncryptors[h];
if(c == null) {
c = new ClusterEncryptor(getClusterSecretKey());
- clusterEncryptors[h] = c;
+ copyOfClusterEncryptors[h] = c;
}
}
}
@@ -592,7 +561,6 @@ public class GMSEncrypt implements Cloneable {
*/
protected class ClusterEncryptor{
byte[] secretBytes;
- //TODO: need to look this is thread safe
Cipher encrypt;
Cipher decrypt;
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5cb50091/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
index f43c98d..ca23639 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
@@ -16,7 +16,6 @@
*/
package com.gemstone.gemfire.distributed.internal.membership.gms.messenger;
-import com.gemstone.gemfire.*;
import static com.gemstone.gemfire.distributed.internal.membership.gms.GMSUtil.replaceStrings;
import static com.gemstone.gemfire.internal.DataSerializableFixedID.JOIN_REQUEST;
import static com.gemstone.gemfire.internal.DataSerializableFixedID.JOIN_RESPONSE;
@@ -26,7 +25,6 @@ import static com.gemstone.gemfire.internal.DataSerializableFixedID.FIND_COORDIN
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
-import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
@@ -39,15 +37,15 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Set;
-import java.util.WeakHashMap;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
+import java.util.stream.Collectors;
import org.apache.logging.log4j.Logger;
import org.jgroups.Address;
@@ -103,30 +101,6 @@ import com.gemstone.gemfire.internal.tcp.MemberShunnedException;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
-import org.apache.logging.log4j.Logger;
-import org.jgroups.*;
-import org.jgroups.Message.Flag;
-import org.jgroups.Message.TransientFlag;
-import org.jgroups.conf.ClassConfigurator;
-import org.jgroups.protocols.UDP;
-import org.jgroups.protocols.pbcast.NAKACK2;
-import org.jgroups.stack.IpAddress;
-import org.jgroups.util.Digest;
-import org.jgroups.util.UUID;
-
-import java.io.*;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.UnknownHostException;
-import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.atomic.AtomicLong;
-import java.util.stream.*;
-
-import static com.gemstone.gemfire.distributed.internal.membership.gms.GMSUtil.replaceStrings;
-import static com.gemstone.gemfire.internal.DataSerializableFixedID.JOIN_REQUEST;
-import static com.gemstone.gemfire.internal.DataSerializableFixedID.JOIN_RESPONSE;
@SuppressWarnings("StatementWithEmptyBody")
public class JGroupsMessenger implements Messenger {
@@ -747,8 +721,7 @@ public class JGroupsMessenger implements Messenger {
Int2ObjectOpenHashMap<Message> messages = new Int2ObjectOpenHashMap<>();
long startSer = theStats.startMsgSerialization();
boolean firstMessage = true;
- for (Iterator<GMSMember> it=calculatedMembers.iterator(); it.hasNext(); ) {
- GMSMember mbr = it.next();
+ for (GMSMember mbr : calculatedMembers ) {
short version = mbr.getVersionOrdinal();
if ( !messages.containsKey(version) ) {
Message jmsg = createJGMessage(msg, local, version);
@@ -765,7 +738,7 @@ public class JGroupsMessenger implements Messenger {
for (GMSMember mbr: calculatedMembers) {
JGAddress to = new JGAddress(mbr);
short version = mbr.getVersionOrdinal();
- Message jmsg = (Message)messages.get(version);
+ Message jmsg = messages.get(version);
Exception problem = null;
try {
Message tmp = (i < (calculatedLen-1)) ? jmsg.copy(true) : jmsg;
@@ -841,7 +814,6 @@ public class JGroupsMessenger implements Messenger {
setMessageFlags(gfmsg, msg);
try {
long start = services.getStatistics().startMsgSerialization();
- byte[] messageBytes = null;
HeapDataOutputStream out_stream = new HeapDataOutputStream(Version.fromOrdinalOrCurrent(version));
Version.CURRENT.writeOrdinal(out_stream, true);
if(encrypt != null) {
@@ -940,9 +912,8 @@ public class JGroupsMessenger implements Messenger {
}
byte[] serializeMessage(DistributionMessage gfmsg, HeapDataOutputStream out_stream) throws IOException {
-
- //DataSerializer.writeObject(this.localAddress.getShallowNetMember(), out_stream);
- GMSMember.writeShallowNetMember((GMSMember)this.localAddress.getNetMember(), out_stream);
+ GMSMember m = (GMSMember)this.localAddress.getNetMember();
+ m.writeEssentialData(out_stream);
DataSerializer.writeObject(gfmsg, out_stream);
return out_stream.toByteArray();
@@ -1054,8 +1025,6 @@ public class JGroupsMessenger implements Messenger {
int requestId = dis.readInt();
long start = services.getStatistics().startUDPMsgDecryption();
try {
- // TODO seems like we don't need this, just set bit that PK is appended
-
logger.debug("readEncryptedMessage Reading Request id " + dfsid + " and requestid is " + requestId + " myid " + this.localAddress);
InternalDistributedMember pkMbr = null;
boolean readPK = false;
@@ -1104,13 +1073,6 @@ public class JGroupsMessenger implements Messenger {
DistributionMessage result = deserializeMessage(in, ordinal);
if (pk != null) {
-
- /*InternalDistributedMember mbr = null;
- if (result instanceof JoinRequestMessage) {
- mbr = ((JoinRequestMessage)result).getMemberID();
- } else {
- mbr = ((FindCoordinatorRequest)result).getMemberID();
- }*/
logger.info("Setting public key for " + result.getSender() + " len " + pk.length);
setPublicKey(pk, result.getSender());
}
@@ -1126,8 +1088,8 @@ public class JGroupsMessenger implements Messenger {
}
DistributionMessage deserializeMessage(DataInputStream in, short ordinal) throws ClassNotFoundException, IOException {
- GMSMember m = GMSMember.readShallowNetMember(in);
-
+ GMSMember m = new GMSMember();
+ m.readEssentialData(in);
DistributionMessage result = (DistributionMessage) DataSerializer.readObject(in);
setSender(result, m, ordinal);
@@ -1352,7 +1314,7 @@ public class JGroupsMessenger implements Messenger {
}
@Override
- public byte[] getPublickey(InternalDistributedMember mbr) {
+ public byte[] getPublicKey(InternalDistributedMember mbr) {
if (encrypt != null) {
return encrypt.getPublicKey(mbr);
}
@@ -1362,7 +1324,7 @@ public class JGroupsMessenger implements Messenger {
@Override
public void setPublicKey(byte[] publickey, InternalDistributedMember mbr) {
if (encrypt != null) {
- logger.debug("Setting pK for member " + mbr);
+ logger.debug("Setting PK for member " + mbr);
encrypt.setPublicKey(publickey, mbr);
}
}
@@ -1383,11 +1345,10 @@ public class JGroupsMessenger implements Messenger {
return null;
}
- private Random randomId = new Random();
+ private AtomicInteger requestId = new AtomicInteger((new Random().nextInt()));
private HashMap<Integer, InternalDistributedMember> requestIdVsRecipients = new HashMap<>();
InternalDistributedMember getRequestedMember(int requestId) {
- //TODO: what if we don't get response, need to remove this otherwise it will be leak
return requestIdVsRecipients.remove(requestId);
}
@@ -1397,7 +1358,7 @@ public class JGroupsMessenger implements Messenger {
@Override
public int getRequestId() {
- return randomId.nextInt();
+ return requestId.incrementAndGet();
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5cb50091/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java
index 00c9e32..ac19010 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java
@@ -936,7 +936,7 @@ public class JGroupsMessengerJUnitTest {
messenger.setPublicKey(otherMbrEncrptor.getPublicKeyBytes(), otherMbr);
messenger.initClusterKey();
- FindCoordinatorRequest gfmsg = new FindCoordinatorRequest(messenger.getMemberID(), new ArrayList<InternalDistributedMember>(2), 1, messenger.getPublickey(messenger.getMemberID()), 1, "");
+ FindCoordinatorRequest gfmsg = new FindCoordinatorRequest(messenger.getMemberID(), new ArrayList<InternalDistributedMember>(2), 1, messenger.getPublicKey(messenger.getMemberID()), 1, "");
Set<InternalDistributedMember> recipients = new HashSet<>();
recipients.add(otherMbr);
gfmsg.setRecipients(recipients);
@@ -967,7 +967,7 @@ public class JGroupsMessengerJUnitTest {
NetView v = createView(otherMbr);
GMSEncrypt otherMbrEncrptor = new GMSEncrypt(services);
- otherMbrEncrptor.setPublicKey(messenger.getPublickey(messenger.getMemberID()), messenger.getMemberID());
+ otherMbrEncrptor.setPublicKey(messenger.getPublicKey(messenger.getMemberID()), messenger.getMemberID());
messenger.setPublicKey(otherMbrEncrptor.getPublicKeyBytes(), otherMbr);
messenger.initClusterKey();
@@ -1037,7 +1037,7 @@ public class JGroupsMessengerJUnitTest {
NetView v = createView(otherMbr);
GMSEncrypt otherMbrEncrptor = new GMSEncrypt(services);
- otherMbrEncrptor.setPublicKey(messenger.getPublickey(messenger.getMemberID()), messenger.getMemberID());
+ otherMbrEncrptor.setPublicKey(messenger.getPublicKey(messenger.getMemberID()), messenger.getMemberID());
messenger.setPublicKey(otherMbrEncrptor.getPublicKeyBytes(), otherMbr);
messenger.initClusterKey();
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5cb50091/geode-core/src/test/resources/com/gemstone/gemfire/codeAnalysis/sanctionedDataSerializables.txt
----------------------------------------------------------------------
diff --git a/geode-core/src/test/resources/com/gemstone/gemfire/codeAnalysis/sanctionedDataSerializables.txt b/geode-core/src/test/resources/com/gemstone/gemfire/codeAnalysis/sanctionedDataSerializables.txt
index 9fc642d..059477c 100644
--- a/geode-core/src/test/resources/com/gemstone/gemfire/codeAnalysis/sanctionedDataSerializables.txt
+++ b/geode-core/src/test/resources/com/gemstone/gemfire/codeAnalysis/sanctionedDataSerializables.txt
@@ -290,7 +290,7 @@ fromDataPre_GFE_7_1_0_0,292,2bb8009d4d2bb9009e01003e2a2bb8008ab500062ab200039900
fromDataPre_GFE_9_0_0_0,296,2bb8009d4d2bb9009e01003e2a2bb8008ab500062ab2000399000e2c2ab40006b8009fa700072cb60007b500062bb900a0010036041504047e99000704a700040336051504057e99000704a700040336062a1504077e99000704a7000403b5003a2a2bb9009e0100b500112a2bb9009e0100b500022a2bb900a00100b500132a2bb8008cb500202a2bb8008ab500182ab40013100da0000e2a2bb8008ab50019a700172bb8008a3a071907c6000c2a1907b800a1b500142bb8008a3a072bb8008db6008e36082abb008f5919071508b70090b5001e2a15042bb70091bb0034592ab400112ab400022ab400132ab400142ab400182ab400202ab4001eb700353a092a2c1d150515062ab4001b1909b80028b500292ab7000b2ab400139e000704a7000403b80043b1
toData,29,2a2bb600962ab4001bb20092b60072a1000d2ab600972bb900860200b1
toDataPre_GFE_7_1_0_0,226,2ab400139e000704a7000403b800432ab600502bb800982b2ab6004fb9009902002ab400062bb8007d033d2ab40029b9007e01009900071c04803d2ab40029b9006d01009900071c05803d2ab4003a9900071c07803d2b1c1100ff7e91b9009a02002b2ab40011b9009902002b2ab40002b9009902002b2ab40013b9009a02002ab400202bb800802ab400182bb8007d2ab40013100da0000e2ab400192bb8007da7000e2ab40014b8009b2bb8007d2ab4001ec700081247a7000a2ab4001eb600812bb8007d2ab4001ec7000911012ca7000a2ab4001eb60082b800832bb80084b1
-toDataPre_GFE_9_0_0_0,240,2ab400139e000704a7000403b800432ab600502bb800982b2ab6004fb9009902002ab400062bb8007d033d2ab40029b9007e01009900071c04803d2ab40029b9006d01009900071c05803d2ab4003a9900071c07803d1c1008803d2b1c1100ff7e91b9009a02002b2ab40011b9009902002b2ab40002b9009902002b2ab40013b9009a02002ab400202bb800802ab400182bb8007d2ab40013100da0000e2ab400192bb8007da7000e2ab40014b8009b2bb8007d2ab4001ec700081247a7000a2ab4001eb600812bb8007d2ab4001ec7000911012ca7000a2ab4001eb60082b800832bb800842b2ab4001b04b80085b1
+toDataPre_GFE_9_0_0_0,225,2ab600502bb800982b2ab6004fb9009902002ab400062bb8007d033d2ab40029b9007e01009900071c04803d2ab40029b9006d01009900071c05803d2ab4003a9900071c07803d1c1008803d2b1c1100ff7e91b9009a02002b2ab40011b9009902002b2ab40002b9009902002b2ab40013b9009a02002ab400202bb800802ab400182bb8007d2ab40013100da0000e2ab400192bb8007da7000e2ab40014b8009b2bb8007d2ab4001ec700081247a7000a2ab4001eb600812bb8007d2ab4001ec7000911012ca7000a2ab4001eb60082b800832bb800842b2ab4001b04b80085b1
com/gemstone/gemfire/distributed/internal/membership/NetView,2
fromData,98,2a2bb8006ec0002bb500112a2bb9006f0100b500062a2bb80070b50009b200409a00122ab40009c7000bbb004159b70042bf2abb000a592ab40009b7000bb5000c2a2bb80071b5000e2a2bb80071b500102a2bb80072b500052a2bb80073b50004b1
@@ -989,8 +989,8 @@ fromData,17,2a2bb80005b500022a2bb80005b50003b1
toData,17,2ab400022bb800042ab400032bb80004b1
com/gemstone/gemfire/internal/cache/EntryEventImpl,2
-fromData,216,2a2bb80013c00014b500152bb800134d2bb800134e2abb0016592c2d01b70017b500182a2bb900190100b8001ab5001b2a2bb9001c0100b500082ab400182bb80013b6001d2a2bb80013c0001eb500092bb9001f0100990013b200209a003cbb0021591222b70023bf2bb9001f01009900212a2bb80024b500252a2ab40025b500062a2ab40025b80026b50005a7000b2a2bb80013b500052bb9001f01009900192a2bb80024b500272a2ab40027b80026b50007a7000b2a2bb80013b500072a2bb80028b500292a2bb8002ab5000a2a2bb8002bb50011b1
-toData,279,2ab400152bb801452ab600882bb801452ab40018b601722bb801452b2ab4001bb40173b9017402002b2ab4000811c03f7eb9017502002ab600462bb801452ab400092bb801452b03b9017602002ab6003c4d2cc1007d3e1d99000d2cc0007db900a801003e2b1db9017602001d99003b2ab40025c6000e2ab400252bb80177a7002e2ab40006c6000e2ab400062bb80177a7001c2cc0007d3a041904b900b601002bb80178a700082c2bb801452ab7003e4d2cc1007d3e1d99000d2cc0007db900a801003e2b1db9017602001d9900292ab40027c6000e2ab400272bb80177a7001c2cc0007d3a041904b900b601002bb80178a700082c2bb801452ab40029c001792bb8017a2ab600542bb801452ab400112bb8017bb1
+fromData,216,2a2bb80016c00017b500182bb800164d2bb800164e2abb0019592c2d01b7001ab5001b2a2bb9001c0100b8001db5001e2a2bb9001f0100b500082ab4001b2bb80016b600202a2bb80016c00021b500092bb900220100990013b200239a003cbb0024591225b70026bf2bb9002201009900212a2bb80027b500282a2ab40028b500062a2ab40028b80029b50005a7000b2a2bb80016b500052bb9002201009900192a2bb80027b5002a2a2ab4002ab80029b50007a7000b2a2bb80016b500072a2bb8002bb5002c2a2bb8002db5000a2a2bb8002eb50013b1
+toData,279,2ab400182bb801482ab600892bb801482ab4001bb601752bb801482b2ab4001eb40176b9017702002b2ab4000811c03f7eb9017802002ab600492bb801482ab400092bb801482b03b9017902002ab6003f4d2cc100803e1d99000d2cc00080b900a901003e2b1db9017902001d99003b2ab40028c6000e2ab400282bb8017aa7002e2ab40006c6000e2ab400062bb8017aa7001c2cc000803a041904b900b701002bb8017ba700082c2bb801482ab700414d2cc100803e1d99000d2cc00080b900a901003e2b1db9017902001d9900292ab4002ac6000e2ab4002a2bb8017aa7001c2cc000803a041904b900b701002bb8017ba700082c2bb801482ab4002cc0017c2bb8017d2ab600572bb801482ab400132bb8017eb1
com/gemstone/gemfire/internal/cache/EntrySnapshot,2
fromData,50,2a03b500052bb9004101003d1c9900112abb000759b70042b50004a7000e2abb000359b70043b500042ab400042bb60044b1