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());