You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by tv...@apache.org on 2017/06/14 16:42:50 UTC

svn commit: r1798715 - in /commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/control: CompositeCache.java CompositeCacheConfigurator.java

Author: tv
Date: Wed Jun 14 16:42:50 2017
New Revision: 1798715

URL: http://svn.apache.org/viewvc?rev=1798715&view=rev
Log:
Approach to fix JCS-177

Modified:
    commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/control/CompositeCache.java
    commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/control/CompositeCacheConfigurator.java

Modified: commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/control/CompositeCache.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/control/CompositeCache.java?rev=1798715&r1=1798714&r2=1798715&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/control/CompositeCache.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/control/CompositeCache.java Wed Jun 14 16:42:50 2017
@@ -111,6 +111,9 @@ public class CompositeCache<K, V>
     /** Count of misses where element was expired. */
     private AtomicInteger missCountExpired;
 
+    /** Cache manager. */
+    private CompositeCacheManager cacheManager = null;
+
     /**
      * The cache hub can only have one memory cache. This could be made more flexible in the future,
      * but they are tied closely together. More than one doesn't make much sense.
@@ -159,6 +162,16 @@ public class CompositeCache<K, V>
     }
 
     /**
+     * Injector for cache manager
+     *
+     * @param manager
+     */
+    public void setCompositeCacheManager( CompositeCacheManager manager )
+    {
+        this.cacheManager = manager;
+    }
+
+    /**
      * @see org.apache.commons.jcs.engine.behavior.IRequireScheduler#setScheduledExecutorService(java.util.concurrent.ScheduledExecutorService)
      */
     @Override
@@ -1286,19 +1299,26 @@ public class CompositeCache<K, V>
      */
     public void dispose( boolean fromRemote )
     {
-        if ( log.isInfoEnabled() )
+         // If already disposed, return immediately
+        if ( alive.compareAndSet(true, false) == false )
         {
-            log.info( "In DISPOSE, [" + this.cacheAttr.getCacheName() + "] fromRemote [" + fromRemote + "]" );
+            return;
         }
 
-        // If already disposed, return immediately
-        if ( alive.compareAndSet(true, false) == false )
+        if ( log.isInfoEnabled() )
         {
-            return;
+            log.info( "In DISPOSE, [" + this.cacheAttr.getCacheName() + "] fromRemote [" + fromRemote + "]" );
         }
 
         synchronized (this)
         {
+            // Remove us from the cache managers list
+            // This will call us back but exit immediately
+            if (cacheManager != null)
+            {
+                cacheManager.freeCache(getCacheName(), fromRemote);
+            }
+
             // Try to stop shrinker thread
             if (future != null)
             {

Modified: commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/control/CompositeCacheConfigurator.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/control/CompositeCacheConfigurator.java?rev=1798715&r1=1798714&r2=1798715&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/control/CompositeCacheConfigurator.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/control/CompositeCacheConfigurator.java Wed Jun 14 16:42:50 2017
@@ -207,6 +207,9 @@ public class CompositeCacheConfigurator
                     ccm.getDefaultCacheAttributes(), regionPrefix ), ea )
             : new CompositeCache<K, V>( cca, ea );
 
+        // Inject cache manager
+        cache.setCompositeCacheManager(ccm);
+
         // Inject scheduler service
         cache.setScheduledExecutorService(ccm.getScheduledExecutorService());