GEODE-1100 Neglect view when it send by member which is not in current view.
there is possibility that existing member can see view from non-existing memebr in view. Thus now we just ignore that view, if member is not exist in current view. Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/f226f010 Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/f226f010 Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/f226f010 Branch: refs/heads/develop Commit: f226f0108630e0330d993514da1342f226863f96 Parents: a8d6015 Author: Hitesh Khamesra <[email protected]> Authored: Fri Mar 11 17:19:46 2016 -0800 Committer: Hitesh Khamesra <[email protected]> Committed: Fri Mar 18 09:23:22 2016 -0700 ---------------------------------------------------------------------- .../internal/membership/gms/membership/GMSJoinLeave.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f226f010/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 2b7893e..717a0ea 100755 --- 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 @@ -831,6 +831,11 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler { private void processViewMessage(final InstallViewMessage m) { NetView view = m.getView(); + + if(currentView != null && !currentView.contains(m.getSender())) { + logger.info("Ignoring the view {} from member {}, which is not in my current view {} ", view, m.getSender(), currentView); + return; + } if (currentView != null && view.getViewId() < currentView.getViewId()) { // ignore old views @@ -1445,9 +1450,12 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler { processRemoveRequest(msg); if (!this.isCoordinator) { msg.resetRecipients(); - msg.setRecipients(v.getPreferredCoordinators(Collections.<InternalDistributedMember>emptySet(), localAddress, 10)); + msg.setRecipients(v.getPreferredCoordinators(Collections.<InternalDistributedMember> emptySet(), localAddress, 10)); services.getMessenger().send(msg); } + } else { + RemoveMemberMessage msg = new RemoveMemberMessage(m, m, reason); + services.getMessenger().send(msg); } }
