You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by fh...@apache.org on 2006/03/28 20:57:23 UTC
svn commit: r389574 - in
/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes:
Member.java group/ChannelCoordinator.java mcast/McastService.java
mcast/MemberImpl.java tcp/SenderState.java
Author: fhanik
Date: Tue Mar 28 10:57:21 2006
New Revision: 389574
URL: http://svn.apache.org/viewcvs?rev=389574&view=rev
Log:
Added a uniqueId to a member, this will help identify a membership session, ie the difference between crash and network hickup
Modified:
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/Member.java
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/ChannelCoordinator.java
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/mcast/McastService.java
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/mcast/MemberImpl.java
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/SenderState.java
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/Member.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/Member.java?rev=389574&r1=389573&r2=389574&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/Member.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/Member.java Tue Mar 28 10:57:21 2006
@@ -66,4 +66,11 @@
public boolean isSuspect();
public boolean isFailing();
+ /**
+ * returns a UUID unique for this member over all sessions.
+ * If the member crashes and restarts, the uniqueId will be different.
+ * @return byte[]
+ */
+ public byte[] getUniqueId();
+
}
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/ChannelCoordinator.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/ChannelCoordinator.java?rev=389574&r1=389573&r2=389574&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/ChannelCoordinator.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/ChannelCoordinator.java Tue Mar 28 10:57:21 2006
@@ -119,6 +119,7 @@
clusterReceiver.start();
clusterSender.start();
//synchronize, big time FIXME
+ membershipService.setMembershipListener(this);
membershipService.setLocalMemberProperties(getClusterReceiver().getHost(), getClusterReceiver().getPort());
membershipService.start(MembershipService.MBR_RX);
membershipService.start(MembershipService.MBR_TX);
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/mcast/McastService.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/mcast/McastService.java?rev=389574&r1=389573&r2=389574&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/mcast/McastService.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/mcast/McastService.java Tue Mar 28 10:57:21 2006
@@ -24,6 +24,7 @@
import org.apache.catalina.tribes.MembershipService;
import org.apache.catalina.util.StringManager;
import org.apache.commons.modeler.Registry;
+import org.apache.catalina.tribes.util.UUIDGenerator;
/**
* A <b>membership</b> implementation using simple multicast.
@@ -253,6 +254,7 @@
localMember.setPort(port);
localMember.setMemberAliveTime(100);
}
+ localMember.setUniqueId(UUIDGenerator.randomUUID(true));
localMember.setServiceStartTime(System.currentTimeMillis());
java.net.InetAddress bind = null;
if ( properties.getProperty("mcastBindAddress")!= null ) {
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/mcast/MemberImpl.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/mcast/MemberImpl.java?rev=389574&r1=389573&r2=389574&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/mcast/MemberImpl.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/mcast/MemberImpl.java Tue Mar 28 10:57:21 2006
@@ -19,10 +19,10 @@
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
+import java.util.Arrays;
import org.apache.catalina.tribes.Member;
import org.apache.catalina.tribes.io.XByteBuffer;
-import java.util.Arrays;
import org.apache.catalina.tribes.tcp.SenderState;
/**
@@ -84,6 +84,7 @@
protected transient long serviceStartTime;
protected transient byte[] dataPkg = null;
+ private byte[] uniqueId = new byte[16];
/**
* Empty constructor for serialization
@@ -175,22 +176,25 @@
//host - 4 bytes
//dlen - 4 bytes
//domain - dlen bytes
+ //uniqueId - 16 bytes
+
byte[] domaind = this.domain;
byte[] addr = host;
- byte[] data = new byte[8+4+addr.length+4+domaind.length];
+ byte[] data = new byte[8+4+addr.length+4+domaind.length+16];
long alive=System.currentTimeMillis()-getServiceStartTime();
-
-
+ //alive data
XByteBuffer.toBytes((long)alive,data,0);
-
+ //port
XByteBuffer.toBytes(port,data,8);
-
+ //host
System.arraycopy(addr,0,data,12,addr.length);
-
+ //domain length
XByteBuffer.toBytes(domaind.length,data,16);
-
+ //domain
System.arraycopy(domaind,0,data,20,domaind.length);
+ //unique Id
+ System.arraycopy(uniqueId,0,data,20+domaind.length,uniqueId.length);
dataPkg = data;
return data;
}
@@ -206,6 +210,7 @@
//host - 4 bytes
//dlen - 4 bytes
//domain - dlen bytes
+ //uniqueId - 16 bytes
byte[] alived = new byte[8];
System.arraycopy(data, 0, alived, 0, 8);
byte[] portd = new byte[4];
@@ -219,10 +224,13 @@
int dlen = XByteBuffer.toInt(dlend, 0);
byte[] domaind = new byte[dlen];
System.arraycopy(data, 20, domaind, 0, domaind.length);
+ byte[] uniqueId = new byte[16];
+ System.arraycopy(data, 20+domaind.length, uniqueId, 0, 16);
member.domain = domaind;
member.setHost(addr);
member.setPort(XByteBuffer.toInt(portd, 0));
member.setMemberAliveTime(XByteBuffer.toLong(alived, 0));
+ member.setUniqueId(uniqueId);
return member;
}
@@ -289,6 +297,10 @@
return serviceStartTime;
}
+ public byte[] getUniqueId() {
+ return uniqueId;
+ }
+
public void setMemberAliveTime(long time) {
memberAliveTime=time;
}
@@ -408,6 +420,10 @@
public void setServiceStartTime(long serviceStartTime) {
this.serviceStartTime = serviceStartTime;
+ }
+
+ public void setUniqueId(byte[] uniqueId) {
+ this.uniqueId = uniqueId;
}
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/SenderState.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/SenderState.java?rev=389574&r1=389573&r2=389574&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/SenderState.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/SenderState.java Tue Mar 28 10:57:21 2006
@@ -41,8 +41,12 @@
protected static HashMap memberStates = new HashMap();
public static SenderState getSenderState(Member member) {
+ return getSenderState(member,true);
+ }
+
+ public static SenderState getSenderState(Member member, boolean create) {
SenderState state = (SenderState)memberStates.get(member);
- if ( state == null ) {
+ if ( state == null && create) {
synchronized ( memberStates ) {
state = (SenderState)memberStates.get(member);
if ( state == null ) {
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org