Corrected use of Channel.getMembers() in cluster
authorfhanik <fhanik@13f79535-47bb-0310-9956-ffa450edef68>
Mon, 11 Feb 2008 17:29:06 +0000 (17:29 +0000)
committerfhanik <fhanik@13f79535-47bb-0310-9956-ffa450edef68>
Mon, 11 Feb 2008 17:29:06 +0000 (17:29 +0000)
Added debug hints to warning messages based on what may be wrong

git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@620533 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java
java/org/apache/catalina/tribes/membership/MemberImpl.java
java/org/apache/catalina/tribes/transport/nio/NioReceiver.java

index eca8863..1f568ca 100644 (file)
@@ -824,8 +824,9 @@ public class SimpleTcpCluster
                 } else
                     log.error("Unable to send message to local member " + msg);
             } else {
-                if (channel.getMembers().length>0)
-                    channel.send(channel.getMembers(),msg,channelSendOptions);
+                Member[] destmembers = channel.getMembers();
+                if (destmembers.length>0)
+                    channel.send(destmembers,msg,channelSendOptions);
                 else if (log.isDebugEnabled()) 
                     log.debug("No members in cluster, ignoring message:"+msg);
             }
index c1e5ce1..7598ccb 100644 (file)
@@ -319,7 +319,7 @@ public class MemberImpl implements Member, java.io.Externalizable {
         int pos = offset;
         
         if (XByteBuffer.firstIndexOf(data,offset,TRIBES_MBR_BEGIN)!=pos) {
-            throw new IllegalArgumentException("Invalid package, should start with:"+org.apache.catalina.tribes.util.Arrays.toString(TRIBES_MBR_BEGIN));
+            throw new IllegalArgumentException("Invalid package, should start with:"+org.apache.catalina.tribes.util.Arrays.toString(TRIBES_MBR_BEGIN)+" Possibly an incompatible client broadcasting on the same multicast address.");
         }
 
         if ( length < (TRIBES_MBR_BEGIN.length+4) ) {
index 86707b3..322d979 100644 (file)
@@ -202,10 +202,8 @@ public class NioReceiver extends ReceiverBase implements Runnable, ChannelReceiv
                     if ( ka != null ) {
                         long delta = now - ka.getLastAccess();
                         if (delta > (long) getTimeout() && (!ka.isAccessed())) {
-                            log.warn("Channel key is registered, but has had no interest ops for the last "+getTimeout()+" ms. (cancelled:"+ka.isCancelled()+"):"+key+" last access:"+new java.sql.Timestamp(ka.getLastAccess()));
-//                            System.out.println("Interest:"+key.interestOps());
-//                            System.out.println("Ready Ops:"+key.readyOps());
-//                            System.out.println("Valid:"+key.isValid());
+                            if (log.isWarnEnabled()) 
+                                log.warn("Channel key is registered, but has had no interest ops for the last "+getTimeout()+" ms. (cancelled:"+ka.isCancelled()+"):"+key+" last access:"+new java.sql.Timestamp(ka.getLastAccess())+" Possible cause: all threads used, perform thread dump");
                             ka.setLastAccess(now);
                             //key.interestOps(SelectionKey.OP_READ);
                         }//end if