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:02:09 UTC
[15/50] [abbrv] incubator-geode git commit: [GEODE-77] TCP check for
final check in health monitor
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/63802dab/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messages/InstallViewMessage.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messages/InstallViewMessage.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messages/InstallViewMessage.java
index fa9989f..1afdf40 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messages/InstallViewMessage.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messages/InstallViewMessage.java
@@ -3,18 +3,22 @@ package com.gemstone.gemfire.distributed.internal.membership.gms.messages;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
import com.gemstone.gemfire.DataSerializer;
import com.gemstone.gemfire.distributed.internal.DistributionManager;
import com.gemstone.gemfire.distributed.internal.HighPriorityDistributionMessage;
import com.gemstone.gemfire.distributed.internal.membership.NetView;
-import com.gemstone.gemfire.distributed.internal.membership.gms.mgr.GMSMembershipManager;
+import com.gemstone.gemfire.internal.InternalDataSerializer;
public class InstallViewMessage extends HighPriorityDistributionMessage {
private NetView view;
private Object credentials;
private boolean preparing;
+ private List<Integer> portsForMembers = Collections.<Integer>emptyList();
public InstallViewMessage(NetView view, Object credentials) {
this.view = view;
@@ -54,12 +58,45 @@ public class InstallViewMessage extends HighPriorityDistributionMessage {
throw new IllegalStateException("this message is not intended to execute in a thread pool");
}
+ private void writeListOfInteger(List<Integer> list, DataOutput out) throws IOException {
+ int size;
+ if (list == null) {
+ size = -1;
+ } else {
+ size = list.size();
+ }
+ InternalDataSerializer.writeArrayLength(size, out);
+ if (size > 0) {
+ for (int i = 0; i < size; i++) {
+ out.writeInt(list.get(i).intValue());
+ }
+ }
+ }
+
+ private List<Integer> readListOfInteger(DataInput in) throws IOException {
+ int size = InternalDataSerializer.readArrayLength(in);
+ if (size > 0) {
+ List<Integer> list = new ArrayList<Integer>(size);
+ for (int i = 0; i < size; i++) {
+ list.add(Integer.valueOf(in.readInt()));
+ }
+ return list;
+ }
+ else if (size == 0) {
+ return Collections.<Integer>emptyList();
+ }
+ else {
+ return null;
+ }
+ }
+
@Override
public void toData(DataOutput out) throws IOException {
super.toData(out);
DataSerializer.writeObject(this.view, out);
DataSerializer.writeObject(this.credentials, out);
out.writeBoolean(preparing);
+ writeListOfInteger(portsForMembers, out);
}
@Override
@@ -68,13 +105,22 @@ public class InstallViewMessage extends HighPriorityDistributionMessage {
this.view = DataSerializer.readObject(in);
this.credentials = DataSerializer.readObject(in);
this.preparing = in.readBoolean();
+ this.portsForMembers = readListOfInteger(in);
}
@Override
public String toString() {
return "InstallViewMessage(preparing="+this.preparing+"; "+this.view
+"; cred="+(credentials==null?"null": "not null")
+ + "portsForMembers: " + portsForMembers
+")";
}
+ public List<Integer> getPortsForMembers() {
+ return this.portsForMembers;
+ }
+
+ public void setPortsForMembers(List<Integer> portsForMembers) {
+ this.portsForMembers = portsForMembers;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/63802dab/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messages/JoinRequestMessage.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messages/JoinRequestMessage.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messages/JoinRequestMessage.java
index fc5faa6..952b20e 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messages/JoinRequestMessage.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messages/JoinRequestMessage.java
@@ -13,7 +13,7 @@ import com.gemstone.gemfire.internal.Version;
public class JoinRequestMessage extends HighPriorityDistributionMessage {
private InternalDistributedMember memberID;
private Object credentials;
-
+ private int socketPort = -1;
public JoinRequestMessage(InternalDistributedMember coord,
InternalDistributedMember id, Object credentials) {
@@ -47,7 +47,7 @@ public class JoinRequestMessage extends HighPriorityDistributionMessage {
@Override
public String toString() {
- return getShortClassName() + "(" + memberID + (credentials==null? ")" : "; with credentials)");
+ return getShortClassName() + "(" + memberID + (credentials==null? ")" : "; with credentials)") + " socketPort:" + socketPort;
}
@Override
@@ -59,6 +59,7 @@ public class JoinRequestMessage extends HighPriorityDistributionMessage {
public void toData(DataOutput out) throws IOException {
DataSerializer.writeObject(memberID, out);
DataSerializer.writeObject(credentials, out);
+ DataSerializer.writePrimitiveInt(socketPort, out);
// preserve the multicast setting so the receiver can tell
// if this is a mcast join request
out.writeBoolean(getMulticast());
@@ -68,7 +69,16 @@ public class JoinRequestMessage extends HighPriorityDistributionMessage {
public void fromData(DataInput in) throws IOException, ClassNotFoundException {
memberID = DataSerializer.readObject(in);
credentials = DataSerializer.readObject(in);
+ socketPort = DataSerializer.readPrimitiveInt(in);
setMulticast(in.readBoolean());
}
+ public int getSocketPort() {
+ return socketPort;
+ }
+
+ public void setSocketPort(int socketPort) {
+ this.socketPort = socketPort;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/63802dab/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messages/JoinResponseMessage.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messages/JoinResponseMessage.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messages/JoinResponseMessage.java
index d85229c..77b72c3 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messages/JoinResponseMessage.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messages/JoinResponseMessage.java
@@ -3,13 +3,16 @@ package com.gemstone.gemfire.distributed.internal.membership.gms.messages;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
import com.gemstone.gemfire.DataSerializer;
import com.gemstone.gemfire.distributed.internal.DistributionManager;
import com.gemstone.gemfire.distributed.internal.HighPriorityDistributionMessage;
import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedMember;
import com.gemstone.gemfire.distributed.internal.membership.NetView;
-import com.gemstone.gemfire.internal.DataSerializableFixedID;
+import com.gemstone.gemfire.internal.InternalDataSerializer;
import com.gemstone.gemfire.internal.Version;
public class JoinResponseMessage extends HighPriorityDistributionMessage {
@@ -19,6 +22,7 @@ public class JoinResponseMessage extends HighPriorityDistributionMessage {
private InternalDistributedMember memberID;
private Object messengerData;
private boolean becomeCoordinator;
+ private List<Integer> portsForMembers = Collections.<Integer>emptyList();
public JoinResponseMessage(InternalDistributedMember memberID, NetView view) {
this.currentView = view;
@@ -74,6 +78,7 @@ public class JoinResponseMessage extends HighPriorityDistributionMessage {
public String toString() {
return getShortClassName() + "("+memberID + "; "
+ (currentView==null? "" : currentView.toString())
+ + "portsForMembers: " + portsForMembers
+ (rejectionMessage==null? "" : ("; "+rejectionMessage))
+ (becomeCoordinator? "; becomeCoordinator" : "")
+ ")";
@@ -89,10 +94,43 @@ public class JoinResponseMessage extends HighPriorityDistributionMessage {
return JOIN_RESPONSE;
}
+ private void writeListOfInteger(List<Integer> list, DataOutput out) throws IOException {
+ int size;
+ if (list == null) {
+ size = -1;
+ } else {
+ size = list.size();
+ }
+ InternalDataSerializer.writeArrayLength(size, out);
+ if (size > 0) {
+ for (int i = 0; i < size; i++) {
+ out.writeInt(list.get(i).intValue());
+ }
+ }
+ }
+
+ private List<Integer> readListOfInteger(DataInput in) throws IOException {
+ int size = InternalDataSerializer.readArrayLength(in);
+ if (size > 0) {
+ List<Integer> list = new ArrayList<Integer>(size);
+ for (int i = 0; i < size; i++) {
+ list.add(Integer.valueOf(in.readInt()));
+ }
+ return list;
+ }
+ else if (size == 0) {
+ return Collections.<Integer>emptyList();
+ }
+ else {
+ return null;
+ }
+ }
+
@Override
public void toData(DataOutput out) throws IOException {
DataSerializer.writeObject(currentView, out);
DataSerializer.writeObject(memberID, out);
+ writeListOfInteger(portsForMembers, out);
out.writeBoolean(becomeCoordinator);
DataSerializer.writeString(rejectionMessage, out);
DataSerializer.writeObject(messengerData, out);
@@ -102,9 +140,17 @@ public class JoinResponseMessage extends HighPriorityDistributionMessage {
public void fromData(DataInput in) throws IOException, ClassNotFoundException {
currentView = DataSerializer.readObject(in);
memberID = DataSerializer.readObject(in);
+ portsForMembers = readListOfInteger(in);
becomeCoordinator = in.readBoolean();
rejectionMessage = DataSerializer.readString(in);
messengerData = DataSerializer.readObject(in);
}
+ public void setPortsForMembers(List<Integer> portsForMembers) {
+ this.portsForMembers = portsForMembers;
+ }
+
+ public List<Integer> getPortsForMembers() {
+ return this.portsForMembers;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/63802dab/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSHealthMonitorJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSHealthMonitorJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSHealthMonitorJUnitTest.java
index ae77b81..cf95817 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSHealthMonitorJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSHealthMonitorJUnitTest.java
@@ -46,9 +46,11 @@ public class GMSHealthMonitorJUnitTest {
private GMSJoinLeave joinLeave;
private GMSHealthMonitor gmsHealthMonitor;
final long memberTimeout = 1000l;
+ private int[] portRange= new int[]{0, 65535};
@Before
public void initMocks() throws UnknownHostException {
+ System.setProperty("gemfire.bind-address", "localhost");
mockDistConfig = mock(DistributionConfig.class);
mockConfig = mock(ServiceConfig.class);
messenger = mock(Messenger.class);
@@ -58,11 +60,13 @@ public class GMSHealthMonitorJUnitTest {
when(mockConfig.getDistributionConfig()).thenReturn(mockDistConfig);
when(mockConfig.getMemberTimeout()).thenReturn(memberTimeout);
+ when(mockConfig.getMembershipPortRange()).thenReturn(portRange);
when(services.getConfig()).thenReturn(mockConfig);
when(services.getMessenger()).thenReturn(messenger);
when(services.getJoinLeave()).thenReturn(joinLeave);
when(services.getCancelCriterion()).thenReturn(stopper);
when(stopper.isCancelInProgress()).thenReturn(false);
+
if (mockMembers == null) {
mockMembers = new ArrayList<InternalDistributedMember>();
@@ -76,7 +80,7 @@ public class GMSHealthMonitorJUnitTest {
mockMembers.add(mbr);
}
}
-
+ when(joinLeave.getMemberID()).thenReturn(mockMembers.get(3));
gmsHealthMonitor = new GMSHealthMonitor();
gmsHealthMonitor.init(services);
gmsHealthMonitor.start();
@@ -316,7 +320,7 @@ public class GMSHealthMonitorJUnitTest {
try {
// this happens after final check, ping timeout
- Thread.sleep(150l);
+ Thread.sleep(memberTimeout);
} catch (InterruptedException e) {
}
@@ -352,7 +356,7 @@ public class GMSHealthMonitorJUnitTest {
try {
// this happens after final check, ping timeout
- Thread.sleep(90l);
+ Thread.sleep(memberTimeout);
} catch (InterruptedException e) {
}
@@ -389,8 +393,8 @@ public class GMSHealthMonitorJUnitTest {
gmsHealthMonitor.processMessage(sm);
try {
- // this happens after final check, ping timeout = 100 ms
- Thread.sleep(110l);
+ // this happens after final check, ping timeout = 1000 ms
+ Thread.sleep(memberTimeout);
} catch (InterruptedException e) {
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/63802dab/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 b1fa2f2..9fea5d8 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
@@ -373,16 +373,16 @@ fromData,11,2a2bb9000e0100b50002b1
toData,11,2b2ab40002b9000d0200b1
com/gemstone/gemfire/distributed/internal/membership/gms/messages/InstallViewMessage,2
-fromData,35,2a2bb7000b2a2bb8000cc0000db500022a2bb8000cb500042a2bb9000e0100b50003b1
-toData,32,2a2bb700082ab400022bb800092ab400042bb800092b2ab40003b9000a0200b1
+fromData,44,2a2bb7001a2a2bb8001bc0001cb500042a2bb8001bb500062a2bb9001d0100b500052a2a2bb7001eb50003b1
+toData,41,2a2bb700162ab400042bb800172ab400062bb800172b2ab40005b9001802002a2ab400032bb70019b1
com/gemstone/gemfire/distributed/internal/membership/gms/messages/JoinRequestMessage,2
-fromData,30,2a2bb80014c00015b500032a2bb80014b500042a2bb900160100b60017b1
-toData,27,2ab400032bb800112ab400042bb800112b2ab60012b900130200b1
+fromData,38,2a2bb80018c00019b500042a2bb80018b500052a2bb8001ab500022a2bb9001b0100b6001cb1
+toData,35,2ab400042bb800142ab400052bb800142ab400022bb800152b2ab60016b900170200b1
com/gemstone/gemfire/distributed/internal/membership/gms/messages/JoinResponseMessage,2
-fromData,49,2a2bb8001ac0001bb500022a2bb8001ac0001cb500032a2bb9001d0100b500052a2bb8001eb500062a2bb8001ab50007b1
-toData,43,2ab400022bb800172ab400032bb800172b2ab40005b9001802002ab400062bb800192ab400072bb80017b1
+fromData,58,2a2bb8002ac0002bb500042a2bb8002ac0002cb500052a2a2bb7002db500032a2bb9002e0100b500072a2bb8002fb500082a2bb8002ab50009b1
+toData,52,2ab400042bb800262ab400052bb800262a2ab400032bb700272b2ab40007b9002802002ab400082bb800292ab400092bb80026b1
com/gemstone/gemfire/distributed/internal/membership/gms/messages/LeaveRequestMessage,2
fromData,20,2a2bb8000bc0000cb500032a2bb8000db50004b1