[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