[jbosscache-commits] JBoss Cache SVN: r7388 - core/trunk/src/main/java/org/jboss/cache/interceptors.
jbosscache-commits at lists.jboss.org
jbosscache-commits at lists.jboss.org
Wed Jan 7 12:46:39 EST 2009
Author: mircea.markus
Date: 2009-01-07 12:46:39 -0500 (Wed, 07 Jan 2009)
New Revision: 7388
Modified:
core/trunk/src/main/java/org/jboss/cache/interceptors/LegacyDataGravitatorInterceptor.java
Log:
bug fix: consider the response from buddy call ready when first GroupResponse is sent back.
Modified: core/trunk/src/main/java/org/jboss/cache/interceptors/LegacyDataGravitatorInterceptor.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/interceptors/LegacyDataGravitatorInterceptor.java 2009-01-07 17:43:08 UTC (rev 7387)
+++ core/trunk/src/main/java/org/jboss/cache/interceptors/LegacyDataGravitatorInterceptor.java 2009-01-07 17:46:39 UTC (rev 7388)
@@ -355,7 +355,7 @@
GravitateDataCommand command = commandsFactory.buildGravitateDataCommand(fqn, searchSubtrees);
// doing a GET_ALL is crappy but necessary since JGroups' GET_FIRST could return null results from nodes that do
// not have either the primary OR backup, and stop polling other valid nodes.
- List resps = rpcManager.callRemoteMethods(null, command, GroupRequest.GET_ALL, buddyManager.getBuddyCommunicationTimeout(), new ResponseValidityFilter(mbrs, rpcManager.getLocalAddress()), false);
+ List resps = rpcManager.callRemoteMethods(null, command, GroupRequest.GET_ALL, buddyManager.getBuddyCommunicationTimeout(), new ResponseValidityFilter(), false);
if (trace) log.trace("got responses " + resps);
@@ -459,25 +459,14 @@
public static class ResponseValidityFilter implements RspFilter
{
- private int numValidResponses = 0;
- private List<Address> pendingResponders;
+ private boolean validResponseFound;
- public ResponseValidityFilter(List<Address> expected, Address localAddress)
- {
- // so for now I used a list to keep it consistent
- this.pendingResponders = new ArrayList<Address>(expected);
- // We'll never get a response from ourself
- this.pendingResponders.remove(localAddress);
- }
-
public boolean isAcceptable(Object object, Address address)
{
- pendingResponders.remove(address);
-
if (object instanceof GravitateResult)
{
GravitateResult response = (GravitateResult) object;
- if (response.isDataFound()) numValidResponses++;
+ validResponseFound = response.isDataFound();
}
// always return true to make sure a response is logged by the JGroups RpcDispatcher.
return true;
@@ -485,7 +474,7 @@
public boolean needMoreResponses()
{
- return numValidResponses < 1 && pendingResponders.size() == 0;
+ return !validResponseFound;
}
}
}
More information about the jbosscache-commits
mailing list