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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]