[jbosscache-commits] JBoss Cache SVN: r5651 - in core/trunk/src: main/java/org/jboss/cache/interceptors and 1 other directories.

jbosscache-commits at lists.jboss.org jbosscache-commits at lists.jboss.org
Wed Apr 23 10:41:36 EDT 2008


Author: manik.surtani at jboss.com
Date: 2008-04-23 10:41:36 -0400 (Wed, 23 Apr 2008)
New Revision: 5651

Modified:
   core/trunk/src/main/java/org/jboss/cache/commands/remote/DataGravitationCleanupCommand.java
   core/trunk/src/main/java/org/jboss/cache/interceptors/DataGravitatorInterceptor.java
   core/trunk/src/test/java/org/jboss/cache/buddyreplication/BuddyReplicationWithCacheLoaderTest.java
Log:
Fixed data gravitation cleanup

Modified: core/trunk/src/main/java/org/jboss/cache/commands/remote/DataGravitationCleanupCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/remote/DataGravitationCleanupCommand.java	2008-04-23 14:38:02 UTC (rev 5650)
+++ core/trunk/src/main/java/org/jboss/cache/commands/remote/DataGravitationCleanupCommand.java	2008-04-23 14:41:36 UTC (rev 5651)
@@ -143,12 +143,19 @@
 
    private void evictNode(Fqn fqn) throws Throwable
    {
-      List<Fqn> toEvict = cacheData.getNodesForEviction(fqn, true);
-      for (Fqn aFqn : toEvict)
+      if (cacheData.exists(fqn))
       {
-         EvictNodeCommand evictFqnCommand = new EvictNodeCommand(aFqn);
-         invoker.invoke(evictFqnCommand);
+         List<Fqn> toEvict = cacheData.getNodesForEviction(fqn, true);
+         for (Fqn aFqn : toEvict)
+         {
+            EvictNodeCommand evictFqnCommand = commandsFactory.buildEvictFqnCommand(aFqn);
+            invoker.invoke(evictFqnCommand);
+         }
       }
+      else
+      {
+         if (trace) log.trace("Not evicting " + fqn + " as it doesn't exist");
+      }
    }
 
    public Object accept(InvocationContext ctx, CommandsVisitor handler) throws Throwable

Modified: core/trunk/src/main/java/org/jboss/cache/interceptors/DataGravitatorInterceptor.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/interceptors/DataGravitatorInterceptor.java	2008-04-23 14:38:02 UTC (rev 5650)
+++ core/trunk/src/main/java/org/jboss/cache/interceptors/DataGravitatorInterceptor.java	2008-04-23 14:41:36 UTC (rev 5651)
@@ -77,8 +77,6 @@
    private Configuration config;
    private CommandsFactory commandsFactory;
    private CacheSPI cacheSPI;
-   private boolean usingOptimisticLocking;
-   private boolean needToCleanup;
 
    @Inject
    public void injectComponents(BuddyManager buddyManager, Configuration config, CacheData cacheData, CommandsFactory commandsFactory, CacheSPI cacheSPI)
@@ -94,8 +92,6 @@
    public void startInterceptor()
    {
       syncCommunications = config.getCacheMode() == Configuration.CacheMode.REPL_SYNC || config.getCacheMode() == Configuration.CacheMode.INVALIDATION_SYNC;
-      usingOptimisticLocking = config.isNodeLockingOptimistic();
-      needToCleanup = config.getBuddyReplicationConfig().isDataGravitationRemoveOnFind();
    }
 
    @Override
@@ -195,11 +191,7 @@
                   // store the gravitated node locally.  This will cause it being backed up in the current instance's buddy.
                   createNode(data.backupData);
 
-                  if (needToCleanup)
-                  {
-                     // Clean up the previous data owner and backups made in the name of the previous owner.
-                     cleanBackupData(data, ctx);
-                  }
+                  cleanBackupData(data, ctx);
                }
             }
             else

Modified: core/trunk/src/test/java/org/jboss/cache/buddyreplication/BuddyReplicationWithCacheLoaderTest.java
===================================================================
--- core/trunk/src/test/java/org/jboss/cache/buddyreplication/BuddyReplicationWithCacheLoaderTest.java	2008-04-23 14:38:02 UTC (rev 5650)
+++ core/trunk/src/test/java/org/jboss/cache/buddyreplication/BuddyReplicationWithCacheLoaderTest.java	2008-04-23 14:41:36 UTC (rev 5651)
@@ -90,7 +90,9 @@
       if (!autoGravitate)
          caches.get(2).getInvocationContext().getOptionOverrides().setForceDataGravitation(true);
 
+      // should cause a gravitation event
       assertEquals(value, caches.get(2).get(fqn, key));
+      cleanupDelay(); // gravitation is async!!
       assertNoLocks(caches);
 
       for (int i = 0; i < 3; i++) System.out.println(i + ": " + loaders[i].get(fqn));
@@ -184,7 +186,10 @@
       // request data from cache2
       if (!autoGravitate)
          caches.get(2).getInvocationContext().getOptionOverrides().setForceDataGravitation(true);
+
+      // should cause a gravitation event
       assertEquals(value, caches.get(2).get(fqn, key));
+      cleanupDelay(); // gravitation is async!!
 
       // test that data does not exist in cache0
       assertTrue("should not exist in cache0", !caches.get(0).exists(fqn));
@@ -351,4 +356,8 @@
       cfg.setEvictionConfig(ec);
    }
 
+   private void cleanupDelay()
+   {
+      TestingUtil.sleepThread(250);
+   }
 }




More information about the jbosscache-commits mailing list