[jbosscache-commits] JBoss Cache SVN: r7551 - in core/trunk/src: test/java/org/jboss/cache/buddyreplication and 1 other directories.

jbosscache-commits at lists.jboss.org jbosscache-commits at lists.jboss.org
Tue Jan 20 16:19:56 EST 2009


Author: mircea.markus
Date: 2009-01-20 16:19:56 -0500 (Tue, 20 Jan 2009)
New Revision: 7551

Modified:
   core/trunk/src/main/java/org/jboss/cache/interceptors/LegacyDataGravitatorInterceptor.java
   core/trunk/src/test/java/org/jboss/cache/buddyreplication/EvictionOfBuddyBackupsTest.java
   core/trunk/src/test/java/org/jboss/cache/buddyreplication/RemoveRootBuddyTest.java
   core/trunk/src/test/java/org/jboss/cache/eviction/ExpirationPolicyTest.java
Log:
more strict replication control

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-20 20:14:22 UTC (rev 7550)
+++ core/trunk/src/main/java/org/jboss/cache/interceptors/LegacyDataGravitatorInterceptor.java	2009-01-20 21:19:56 UTC (rev 7551)
@@ -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(), false);
+      List resps = rpcManager.callRemoteMethods(null, command, GroupRequest.GET_ALL, buddyManager.getBuddyCommunicationTimeout(), new ResponseValidityFilter(rpcManager.getMembers().size(), rpcManager.getLocalAddress()), false);
 
       if (trace) log.trace("got responses " + resps);
 
@@ -460,13 +460,18 @@
    public static class ResponseValidityFilter implements RspFilter
    {
       private boolean validResponseFound;
+      int memberCount;
 
+      public ResponseValidityFilter(int memberCount, Address localAddress)
+      {
+         this.memberCount = memberCount;
+      }
+
       public boolean isAcceptable(Object object, Address address)
       {
          if (object instanceof GravitateResult)
          {
-            GravitateResult response = (GravitateResult) object;
-            validResponseFound = response.isDataFound();
+            memberCount--;
          }
          // always return true to make sure a response is logged by the JGroups RpcDispatcher.
          return true;
@@ -474,7 +479,7 @@
 
       public boolean needMoreResponses()
       {
-         return !validResponseFound;
+         return memberCount > 1;
       }
    }
 }

Modified: core/trunk/src/test/java/org/jboss/cache/buddyreplication/EvictionOfBuddyBackupsTest.java
===================================================================
--- core/trunk/src/test/java/org/jboss/cache/buddyreplication/EvictionOfBuddyBackupsTest.java	2009-01-20 20:14:22 UTC (rev 7550)
+++ core/trunk/src/test/java/org/jboss/cache/buddyreplication/EvictionOfBuddyBackupsTest.java	2009-01-20 21:19:56 UTC (rev 7551)
@@ -3,12 +3,14 @@
 import org.jboss.cache.CacheSPI;
 import org.jboss.cache.Fqn;
 import org.jboss.cache.UnitTestCacheFactory;
+import org.jboss.cache.commands.write.PutKeyValueCommand;
 import org.jboss.cache.config.EvictionConfig;
 import org.jboss.cache.config.EvictionRegionConfig;
 import org.jboss.cache.eviction.LRUAlgorithmConfig;
 import org.jboss.cache.eviction.NullEvictionAlgorithmConfig;
 import org.jboss.cache.util.TestingUtil;
 import org.jboss.cache.util.internals.EvictionController;
+import org.jboss.cache.util.internals.replicationlisteners.ReplicationListener;
 import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
@@ -34,8 +36,9 @@
       cache1.start();
       ec1 = new EvictionController(cache1);
 
-     cache2 = (CacheSPI) new UnitTestCacheFactory<Object, Object>().createCache(cache1.getConfiguration().clone(), getClass());
-     ec2 = new EvictionController(cache2);
+      cache2 = (CacheSPI) new UnitTestCacheFactory<Object, Object>().createCache(cache1.getConfiguration().clone(), getClass());
+      ec2 = new EvictionController(cache2);
+      waitForSingleBuddy(cache1, cache2);
 
       TestingUtil.blockUntilViewsReceived(60000, cache1, cache2);
    }
@@ -66,7 +69,11 @@
 
    public void testEvictionOfBackupRegions() throws Exception
    {
+      ReplicationListener replicationListener2 = ReplicationListener.getReplicationListener(cache2);
+      replicationListener2.expect(PutKeyValueCommand.class);
       cache1.put(fqn, "k", "v");
+      replicationListener2.waitForReplicationToOccur();
+
       assert cache1.peek(fqn, false, false) != null : "Node should exist";
       assert cache2.peek(fqnTransformer.getBackupFqn(cache1.getLocalAddress(), fqn), false, false) != null : "Node should exist on backup";
 

Modified: core/trunk/src/test/java/org/jboss/cache/buddyreplication/RemoveRootBuddyTest.java
===================================================================
--- core/trunk/src/test/java/org/jboss/cache/buddyreplication/RemoveRootBuddyTest.java	2009-01-20 20:14:22 UTC (rev 7550)
+++ core/trunk/src/test/java/org/jboss/cache/buddyreplication/RemoveRootBuddyTest.java	2009-01-20 21:19:56 UTC (rev 7551)
@@ -22,6 +22,7 @@
    {
       CacheSPI cache1 = createCache(false, 1, "myBuddyPoolReplicationGroup", false, true, true);
       CacheSPI cache2 = createCache(false, 1, "myBuddyPoolReplicationGroup", false, true, true);
+      waitForSingleBuddy(cache1, cache2);
       ReplicationListener replicationListener2 = ReplicationListener.getReplicationListener(cache2);
       List<CacheSPI<Object, Object>> caches = new ArrayList<CacheSPI<Object, Object>>(2);
       cachesTL.set(caches);

Modified: core/trunk/src/test/java/org/jboss/cache/eviction/ExpirationPolicyTest.java
===================================================================
--- core/trunk/src/test/java/org/jboss/cache/eviction/ExpirationPolicyTest.java	2009-01-20 20:14:22 UTC (rev 7550)
+++ core/trunk/src/test/java/org/jboss/cache/eviction/ExpirationPolicyTest.java	2009-01-20 21:19:56 UTC (rev 7551)
@@ -96,6 +96,7 @@
       }
    }
 
+   @Test (invocationCount = 5, successPercentage = 80)
    public void testEviction() throws Exception
    {
       cache.put(fqn1, ExpirationAlgorithmConfig.EXPIRATION_KEY, future);




More information about the jbosscache-commits mailing list