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/21 21:35:41 UTC

svn commit: r387616 - in /tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes: ./ tcp/ tcp/nio/ tipis/

Author: fhanik
Date: Tue Mar 21 12:35:39 2006
New Revision: 387616

URL: http://svn.apache.org/viewcvs?rev=387616&view=rev
Log:
Worked out some bugs in the map

Modified:
    tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/ChannelException.java
    tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractSender.java
    tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/NioSender.java
    tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/ParallelNioSender.java
    tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java
    tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/LazyReplicatedMap.java

Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/ChannelException.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/ChannelException.java?rev=387616&r1=387615&r2=387616&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/ChannelException.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/ChannelException.java Tue Mar 21 12:35:39 2006
@@ -43,6 +43,21 @@
         super(cause);
     }
     
+    public String getMessage() {
+        StringBuffer buf = new StringBuffer(super.getMessage());
+        if (faultyMembers==null || faultyMembers.size() == 0 ) {
+            buf.append("; No faulty members identified.");
+        } else {
+            buf.append("; Faulty members:");
+            for ( int i=0; i<faultyMembers.size(); i++ ) {
+                Member mbr = (Member)faultyMembers.get(i);
+                buf.append(mbr.getName());
+                buf.append("; ");
+            }
+        }
+        return buf.toString();
+    }
+    
     public void addFaultyMember(Member mbr) {
         if ( this.faultyMembers==null ) this.faultyMembers = new ArrayList();
         faultyMembers.add(mbr);

Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractSender.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractSender.java?rev=387616&r1=387615&r2=387616&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractSender.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractSender.java Tue Mar 21 12:35:39 2006
@@ -48,7 +48,7 @@
     private Member destination;
     private InetAddress address;
     private int port;
-    private int maxRetryAttempts = 0;//zero resends
+    private int maxRetryAttempts = 2;//zero resends
     private int attempt;
     public AbstractSender() {
         

Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/NioSender.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/NioSender.java?rev=387616&r1=387615&r2=387616&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/NioSender.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/NioSender.java Tue Mar 21 12:35:39 2006
@@ -147,9 +147,7 @@
         ackbuf.append(readbuf,read);
         readbuf.clear();
         if (ackbuf.doesPackageExist() ) {
-            System.out.print("Reading ack:");
             boolean result = Arrays.equals(ackbuf.extractDataPackage(true),org.apache.catalina.tribes.tcp.Constants.ACK_DATA);
-            System.out.println(result);
             return result;
         } else {
             return false;

Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/ParallelNioSender.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/ParallelNioSender.java?rev=387616&r1=387615&r2=387616&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/ParallelNioSender.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/ParallelNioSender.java Tue Mar 21 12:35:39 2006
@@ -120,7 +120,7 @@
                 state.setSuspect();
                 byte[] data = sender.getMessage();
                 int attempt = sender.getAttempt()+1;
-                if ( sender.getAttempt() >= maxAttempts && maxAttempts>0 ) {
+                if ( sender.getAttempt() <= maxAttempts && maxAttempts>0 ) {
                     try { 
                         sender.disconnect(); 
                         sender.connect();
@@ -130,7 +130,7 @@
                         state.setFailing();
                     }
                 } else {
-                    ChannelException cx = new ChannelException(x);
+                    ChannelException cx = new ChannelException("Send failed, attempt:"+sender.getAttempt()+" max:"+maxAttempts,x);
                     cx.addFaultyMember(sender.getDestination());
                     throw cx;
                 }//end if

Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java?rev=387616&r1=387615&r2=387616&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java Tue Mar 21 12:35:39 2006
@@ -152,6 +152,7 @@
             MapMessage msg = new MapMessage(this.mapContextName, MapMessage.MSG_STOP,
                                             false, null, null, null, wrap(channel.getLocalMember(false)));
             if (channel != null) channel.send(channel.getMembers(), msg,channel.SEND_OPTIONS_DEFAULT);
+
         } catch (ChannelException x) {
             log.warn("Unable to send stop message.", x);
         }
@@ -225,7 +226,9 @@
 
             }
             try {
-                channel.send(entry.getBackupNodes(), msg,channel.SEND_OPTIONS_DEFAULT);
+                if ( entry.getBackupNodes()!= null && entry.getBackupNodes().length > 0 ) {
+                    channel.send(entry.getBackupNodes(), msg, channel.SEND_OPTIONS_DEFAULT);
+                }
             } catch (ChannelException x) {
                 log.error("Unable to replicate data.", x);
             }
@@ -401,7 +404,12 @@
                         }
                     } else {
                         entry.setValue(mapmsg.getValue());
+                        diff.setOwner(getMapOwner());
                     } //end if
+                } else if  (mapmsg.getValue() instanceof ReplicatedMapEntry) {
+                    ReplicatedMapEntry re = (ReplicatedMapEntry)mapmsg.getValue();
+                    re.setOwner(getMapOwner());
+                    entry.setValue(mapmsg.getValue());
                 } else {
                     entry.setValue(mapmsg.getValue());
                 } //end if
@@ -420,7 +428,7 @@
     public void mapMemberAdded(Member member) {
         //select a backup node if we don't have one
         synchronized (mapMembers) {
-            mapMembers.add(member);
+            if (!mapMembers.contains(member) ) mapMembers.add(member);
         }
         synchronized (stateMutex) {
             Iterator i = super.entrySet().iterator();
@@ -725,7 +733,7 @@
                     break;
                 }
                 case MSG_START:
-                     MSG_STOP: {
+                case MSG_STOP: {
                         nodes = readMembers(in);
                         break;
                     }
@@ -779,13 +787,17 @@
                     break;
                 }
                 case MSG_START:
-                     MSG_STOP: {
-                        writeMembers(out,nodes);
-                        break;
+                case MSG_STOP: {
+                    writeMembers(out,nodes);
+                    break;
                 }
             } //switch
         } //writeExternal
-
+        
+        /**
+         * shallow clone
+         * @return Object
+         */
         public Object clone() {
             return new MapMessage(this.mapId, this.msgtype, this.diff, this.key, this.value, this.diffvalue, this.nodes);
         }

Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/LazyReplicatedMap.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/LazyReplicatedMap.java?rev=387616&r1=387615&r2=387616&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/LazyReplicatedMap.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/LazyReplicatedMap.java Tue Mar 21 12:35:39 2006
@@ -158,7 +158,10 @@
                 msg = (MapMessage) resp[0].getMessage();
                 
                 Member[] backup = entry.getBackupNodes();
-
+                if ( entry.getValue() instanceof ReplicatedMapEntry ) {
+                    ReplicatedMapEntry val = (ReplicatedMapEntry)entry.getValue();
+                    val.setOwner(getMapOwner());
+                }
                 if (entry.isBackup()) {
                     //select a new backup node
                     backup = publishEntryInfo(key, msg.getValue());



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org