[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