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