[jboss-cvs] JBossAS SVN: r104027 - in trunk: testsuite/src/main/org/jboss/test/cluster/rspfilter and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Apr 15 18:43:06 EDT 2010


Author: bstansberry at jboss.com
Date: 2010-04-15 18:43:05 -0400 (Thu, 15 Apr 2010)
New Revision: 104027

Modified:
   trunk/cluster/src/main/java/org/jboss/ha/jndi/LookupSucceededFilter.java
   trunk/testsuite/src/main/org/jboss/test/cluster/rspfilter/TruthfulResponseFilter.java
Log:
[JBAS-7945] Make thread safe

Modified: trunk/cluster/src/main/java/org/jboss/ha/jndi/LookupSucceededFilter.java
===================================================================
--- trunk/cluster/src/main/java/org/jboss/ha/jndi/LookupSucceededFilter.java	2010-04-15 20:42:04 UTC (rev 104026)
+++ trunk/cluster/src/main/java/org/jboss/ha/jndi/LookupSucceededFilter.java	2010-04-15 22:43:05 UTC (rev 104027)
@@ -37,7 +37,7 @@
 {
    private static final Logger log = Logger.getLogger(LookupSucceededFilter.class);
    private static final boolean trace = log.isTraceEnabled();
-   private boolean lookupSucceeded;
+   private volatile boolean lookupSucceeded;
 
    public boolean isAcceptable(Object response, ClusterNode sender)
    {
@@ -46,14 +46,20 @@
          log.trace("isAcceptable (" + response + ") from " + sender);
       }
       
-      lookupSucceeded = (response != null) && !(response instanceof Exception) && !(response instanceof NoHandlerForRPC);
-      
-      if (trace && lookupSucceeded)
-      {
-         log.trace("Lookup succeded from " + sender);
+      if ((response != null) && !(response instanceof Exception) && !(response instanceof NoHandlerForRPC))
+      {      
+         if (trace)
+         {
+            log.trace("Lookup succeded from " + sender);
+         }
+         lookupSucceeded = true;
       }
-      
-      return true;
+
+      // NOTE: *MUST* always return true or the RPC will never complete
+      // if no response is "acceptable". Returning true cause the response
+      // count to be incremented, allowing the call to complete when the
+      // desired numbers of responses are in
+      return true;      
    }
 
    public boolean needMoreResponses()

Modified: trunk/testsuite/src/main/org/jboss/test/cluster/rspfilter/TruthfulResponseFilter.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/cluster/rspfilter/TruthfulResponseFilter.java	2010-04-15 20:42:04 UTC (rev 104026)
+++ trunk/testsuite/src/main/org/jboss/test/cluster/rspfilter/TruthfulResponseFilter.java	2010-04-15 22:43:05 UTC (rev 104027)
@@ -25,7 +25,6 @@
 
 import org.jboss.ha.framework.interfaces.ClusterNode;
 import org.jboss.ha.framework.interfaces.ResponseFilter;
-import org.jboss.ha.framework.server.ClusterPartition.NoHandlerForRPC;
 import org.jboss.logging.Logger;
 
 /**
@@ -37,23 +36,22 @@
 {
    private static final long serialVersionUID = 2223820538160300865L;
    private static final Logger log = Logger.getLogger(TruthfulResponseFilter.class);
-   private boolean lookupSucceeded;
+   private volatile boolean lookupSucceeded;
 
    public boolean isAcceptable(Object response, ClusterNode sender)
    {
       log.debug("isAcceptable (" + response + ") from " + sender);
       
-      if (response != null && !(response instanceof Exception) && !(response instanceof NoHandlerForRPC)) 
+      if (response instanceof Boolean && ((Boolean)response).booleanValue()) 
       {
-         lookupSucceeded = (Boolean)response; 
-      }
-      
-      if (lookupSucceeded)
-      {
+         lookupSucceeded = true; 
+         
          log.debug("Lookup succeded from " + sender);
+         
+         return true;
       }
       
-      return lookupSucceeded;
+      return false;
    }
 
    public boolean needMoreResponses()




More information about the jboss-cvs-commits mailing list