You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jcs-dev@jakarta.apache.org by as...@apache.org on 2008/08/27 21:44:35 UTC
svn commit: r689591 - in /jakarta/jcs/trunk: src/java/org/apache/jcs/engine/
src/java/org/apache/jcs/engine/behavior/
src/java/org/apache/jcs/engine/control/
src/java/org/apache/jcs/engine/control/event/
src/java/org/apache/jcs/engine/control/group/ sr...
Author: asmuts
Date: Wed Aug 27 12:44:33 2008
New Revision: 689591
URL: http://svn.apache.org/viewvc?rev=689591&view=rev
Log:
https://issues.apache.org/jira/browse/JCS-44
Made the spool chunk size configurable.
Modified:
jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CompositeCacheAttributes.java
jakarta/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICompositeCacheAttributes.java
jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCache.java
jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCacheConfigurator.java
jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCacheManager.java
jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/event/ElementEventQueue.java
jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/group/GroupAttrName.java
jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/group/GroupId.java
jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/AbstractMemoryCache.java
jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/mru/MRUMemoryCache.java
jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/shrinking/ShrinkerThread.java
jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/util/MemoryElementDescriptor.java
jakarta/jcs/trunk/src/test/org/apache/jcs/engine/control/CompositeCacheConfiguratorUnitTest.java
jakarta/jcs/trunk/xdocs/changes.xml
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CompositeCacheAttributes.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CompositeCacheAttributes.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CompositeCacheAttributes.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CompositeCacheAttributes.java Wed Aug 27 12:44:33 2008
@@ -31,28 +31,43 @@
public class CompositeCacheAttributes
implements ICompositeCacheAttributes, Cloneable
{
+ /** Don't change */
private static final long serialVersionUID = 6754049978134196787L;
+ /** default lateral switch */
private static final boolean DEFAULT_USE_LATERAL = true;
+ /** default remote switch */
private static final boolean DEFAULT_USE_REMOTE = true;
+ /** default disk switch */
private static final boolean DEFAULT_USE_DISK = true;
+ /** default shrinker setting */
private static final boolean DEFAULT_USE_SHRINKER = false;
+ /** default max objects value */
private static final int DEFAULT_MAX_OBJECTS = 100;
+ /** default */
private static final int DEFAULT_MAX_MEMORY_IDLE_TIME_SECONDS = 60 * 120;
+ /** default interval to run the shrinker */
private static final int DEFAULT_SHRINKER_INTERVAL_SECONDS = 30;
+ /** default */
private static final int DEFAULT_MAX_SPOOL_PER_RUN = -1;
+ /** default */
private static final String DEFAULT_MEMORY_CACHE_NAME = "org.apache.jcs.engine.memory.lru.LRUMemoryCache";
+ /** Default number to send to disk at a time when memory fills. */
+ private static final int DEFAULT_CHUNK_SIZE = 2;
+
+ /** allow lateral caches */
private boolean useLateral = DEFAULT_USE_LATERAL;
+ /** allow remote caches */
private boolean useRemote = DEFAULT_USE_REMOTE;
/** Whether we should use a disk cache if it is configured. */
@@ -79,8 +94,12 @@
/** The name of the memory cache implementation class. */
private String memoryCacheName;
+ /** Set via DISK_USAGE_PATTERN_NAME */
private short diskUsagePattern = DISK_USAGE_PATTERN_SWAP;
+ /** How many to spool to disk at a time. */
+ private int spoolChunkSize = DEFAULT_CHUNK_SIZE;
+
/**
* Constructor for the CompositeCacheAttributes object
*/
@@ -331,6 +350,26 @@
}
/**
+ * Number to send to disk at at time when memory is full.
+ * <p>
+ * @return int
+ */
+ public int getSpoolChunkSize()
+ {
+ return spoolChunkSize;
+ }
+
+ /**
+ * Number to send to disk at a time.
+ * <p>
+ * @param spoolChunkSize
+ */
+ public void setSpoolChunkSize( int spoolChunkSize )
+ {
+ this.spoolChunkSize = spoolChunkSize;
+ }
+
+ /**
* @return Returns the diskUsagePattern.
*/
public short getDiskUsagePattern()
@@ -341,7 +380,7 @@
/**
* Description of the Method
* <p>
- * @return
+ * @return ICompositeCacheAttributes a copy
*/
public ICompositeCacheAttributes copy()
{
@@ -373,6 +412,7 @@
dump.append( ", maxObjs = " ).append( maxObjs );
dump.append( ", maxSpoolPerRun = " ).append( maxSpoolPerRun );
dump.append( ", diskUsagePattern = " ).append( diskUsagePattern );
+ dump.append( ", spoolChunkSize = " ).append( spoolChunkSize );
dump.append( " ]" );
return dump.toString();
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICompositeCacheAttributes.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICompositeCacheAttributes.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICompositeCacheAttributes.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICompositeCacheAttributes.java Wed Aug 27 12:44:33 2008
@@ -226,4 +226,18 @@
* @return Returns the diskUsagePattern.
*/
public short getDiskUsagePattern();
+
+ /**
+ * Number to send to disk at at time when memory is full.
+ * <p>
+ * @return int
+ */
+ public int getSpoolChunkSize();
+
+ /**
+ * Number to send to disk at a time.
+ * <p>
+ * @param spoolChunkSize
+ */
+ public void setSpoolChunkSize( int spoolChunkSize );
}
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCache.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCache.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCache.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCache.java Wed Aug 27 12:44:33 2008
@@ -965,7 +965,6 @@
* <p>
* @param key
* @return true is it was removed
- * @throws IOException
* @see org.apache.jcs.engine.behavior.ICache#remove(java.io.Serializable)
*/
public boolean remove( Serializable key )
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCacheConfigurator.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCacheConfigurator.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCacheConfigurator.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCacheConfigurator.java Wed Aug 27 12:44:33 2008
@@ -50,24 +50,31 @@
*/
public class CompositeCacheConfigurator
{
+ /** The logger */
private final static Log log = LogFactory.getLog( CompositeCacheConfigurator.class );
+ /** default region prefix */
final static String DEFAULT_REGION = "jcs.default";
+ /** normal region prefix */
final static String REGION_PREFIX = "jcs.region.";
+ /** system region prefix. might not be used */
final static String SYSTEM_REGION_PREFIX = "jcs.system.";
+ /** auxiliary prefix */
final static String AUXILIARY_PREFIX = "jcs.auxiliary.";
/** .attributes */
final static String ATTRIBUTE_PREFIX = ".attributes";
+ /** .cacheattributes */
final static String CACHE_ATTRIBUTE_PREFIX = ".cacheattributes";
+ /** .elementattributes */
final static String ELEMENT_ATTRIBUTE_PREFIX = ".elementattributes";
- /** Can't operate on the interface. */
+ /** Can't operate on the interface. */
private CompositeCacheManager compositeCacheManager;
/**
@@ -365,11 +372,11 @@
}
/**
- * Get an compositecacheattributes for the listed region.
+ * Get an ICompositeCacheAttributes for the listed region.
*<p>
* @param props
* @param regName
- * @return
+ * @return ICompositeCacheAttributes
*/
protected ICompositeCacheAttributes parseCompositeCacheAttributes( Properties props, String regName )
{
@@ -549,7 +556,7 @@
auxAttr.setCacheName( regName );
String auxPrefix = AUXILIARY_PREFIX + auxName;
-
+
// CONFIGURE THE EVENT LOGGER
ICacheEventLogger cacheEventLogger = AuxiliaryCacheConfigurator.parseCacheEventLogger( props, auxPrefix );
@@ -561,7 +568,7 @@
// need to make sure the manager already has the cache
// before the auxiliary is created.
auxCache = auxFac.createCache( auxAttr, compositeCacheManager, cacheEventLogger, elementSerializer );
-
+
return auxCache;
}
}
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCacheManager.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCacheManager.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCacheManager.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCacheManager.java Wed Aug 27 12:44:33 2008
@@ -61,8 +61,10 @@
public class CompositeCacheManager
implements IRemoteCacheConstants, Serializable, ICompositeCacheManager, IShutdownObservable
{
+ /** Don't change */
private static final long serialVersionUID = 7598584393134401756L;
+ /** The logger */
private final static Log log = LogFactory.getLog( CompositeCacheManager.class );
/** Caches managed by this cache manager */
@@ -95,10 +97,13 @@
/** The Singleton Instance */
protected static CompositeCacheManager instance;
+ /** The prefix of relevant system properties */
private static final String SYSTEM_PROPERTY_KEY_PREFIX = "jcs";
+ /** Should we use system property substitutions. */
private static final boolean DEFAULT_USE_SYSTEM_PROPERTIES = true;
+ /** Those waiting for notification of a shutdown. */
private Set shutdownObservers = new HashSet();
/**
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/event/ElementEventQueue.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/event/ElementEventQueue.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/event/ElementEventQueue.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/event/ElementEventQueue.java Wed Aug 27 12:44:33 2008
@@ -212,10 +212,13 @@
// /////////////////////////// Inner classes /////////////////////////////
+ /** A node in the queue. These are chained forming a singly linked list */
private static class Node
{
+ /** The next node. */
Node next = null;
+ /** The event to run */
ElementEventQueue.AbstractElementEventRunner event = null;
}
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/group/GroupAttrName.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/group/GroupAttrName.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/group/GroupAttrName.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/group/GroupAttrName.java Wed Aug 27 12:44:33 2008
@@ -27,6 +27,7 @@
public class GroupAttrName
implements Serializable
{
+ /** Don't change */
private static final long serialVersionUID = 1586079686300744198L;
/** Description of the Field */
@@ -35,6 +36,7 @@
/** the name of the attribute */
public final Object attrName;
+ /** Cached toString value */
private String toString;
/**
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/group/GroupId.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/group/GroupId.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/group/GroupId.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/group/GroupId.java Wed Aug 27 12:44:33 2008
@@ -37,10 +37,12 @@
/** the name of the region. */
public final String cacheName;
+ /** Cached toString value. */
private String toString;
/**
* Constructor for the GroupId object
+ * <p>
* @param cacheName
* @param groupName
*/
@@ -60,7 +62,7 @@
}
/**
- * @param obj
+ * @param obj
* @return cacheName.equals( g.cacheName ) && groupName.equals( g.groupName );
*/
public boolean equals( Object obj )
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/AbstractMemoryCache.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/AbstractMemoryCache.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/AbstractMemoryCache.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/AbstractMemoryCache.java Wed Aug 27 12:44:33 2008
@@ -59,9 +59,6 @@
/** log instance */
private final static Log log = LogFactory.getLog( AbstractMemoryCache.class );
- /** default chunking size */
- private static final int DEFAULT_CHUNK_SIZE = 2;
-
/** The region name. This defines a namespace of sorts. */
protected String cacheName;
@@ -80,8 +77,8 @@
/** status */
protected int status;
- /** How many to spool at a time. TODO make configurable */
- protected int chunkSize = DEFAULT_CHUNK_SIZE;
+ /** How many to spool at a time. */
+ protected int chunkSize;
/** The background memory shrinker, one for all regions. */
private static ClockDaemon shrinkerDaemon;
@@ -103,7 +100,8 @@
this.cacheName = hub.getCacheName();
this.cattr = hub.getCacheAttributes();
this.cache = hub;
-
+
+ chunkSize = cattr.getSpoolChunkSize();
status = CacheConstants.STATUS_ALIVE;
if ( cattr.getUseMemoryShrinker() )
@@ -342,8 +340,6 @@
/**
* Allows us to set the daemon status on the clockdaemon
- * <p>
- * @author aaronsm
*/
class MyThreadFactory
implements ThreadFactory
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/mru/MRUMemoryCache.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/mru/MRUMemoryCache.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/mru/MRUMemoryCache.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/mru/MRUMemoryCache.java Wed Aug 27 12:44:33 2008
@@ -50,14 +50,19 @@
public class MRUMemoryCache
extends AbstractMemoryCache
{
+ /** Don't change */
private static final long serialVersionUID = 5013101678192336129L;
+ /** The logger */
private final static Log log = LogFactory.getLog( MRUMemoryCache.class );
+ /** Simple stat. Number of hits. */
private int hitCnt = 0;
+ /** Number of misses */
private int missCnt = 0;
+ /** Number of puts */
private int putCnt = 0;
/**
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/shrinking/ShrinkerThread.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/shrinking/ShrinkerThread.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/shrinking/ShrinkerThread.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/shrinking/ShrinkerThread.java Wed Aug 27 12:44:33 2008
@@ -44,6 +44,7 @@
public class ShrinkerThread
implements Runnable
{
+ /** The logger */
private final static Log log = LogFactory.getLog( ShrinkerThread.class );
/** The MemoryCache instance which this shrinker is watching */
@@ -55,11 +56,12 @@
/** Maximum number of items to spool per run. Default is -1, or no limit. */
private int maxSpoolPerRun;
+ /** Should we limit the number spooled per run. If so, the maxSpoolPerRun will be used. */
private boolean spoolLimit = false;
/**
* Constructor for the ShrinkerThread object.
- *
+ * <p>
* @param cache
* The MemoryCache which the new shrinker should watch.
*/
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/util/MemoryElementDescriptor.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/util/MemoryElementDescriptor.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/util/MemoryElementDescriptor.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/util/MemoryElementDescriptor.java Wed Aug 27 12:44:33 2008
@@ -28,7 +28,7 @@
public class MemoryElementDescriptor
extends DoubleLinkedListNode
{
-
+ /** Don't change */
private static final long serialVersionUID = -1905161209035522460L;
/** The CacheElement wrapped by this descriptor */
@@ -36,7 +36,7 @@
/**
* Constructor for the MemoryElementDescriptor object
- *
+ * <p>
* @param ce
*/
public MemoryElementDescriptor( ICacheElement ce )
Modified: jakarta/jcs/trunk/src/test/org/apache/jcs/engine/control/CompositeCacheConfiguratorUnitTest.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/test/org/apache/jcs/engine/control/CompositeCacheConfiguratorUnitTest.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/test/org/apache/jcs/engine/control/CompositeCacheConfiguratorUnitTest.java (original)
+++ jakarta/jcs/trunk/src/test/org/apache/jcs/engine/control/CompositeCacheConfiguratorUnitTest.java Wed Aug 27 12:44:33 2008
@@ -28,7 +28,7 @@
String auxPrefix = "jcs.auxiliary." + auxName;
String auxiliaryClassName = MockAuxiliaryCacheFactory.class.getCanonicalName();
String eventLoggerClassName = MockCacheEventLogger.class.getCanonicalName();
- String auxiliaryAttributeClassName = MockAuxiliaryCacheAttributes.class.getCanonicalName();
+ String auxiliaryAttributeClassName = MockAuxiliaryCacheAttributes.class.getCanonicalName();
Properties props = new Properties();
props.put( auxPrefix, auxiliaryClassName );
@@ -36,7 +36,7 @@
props.put( auxPrefix + AuxiliaryCacheConfigurator.CACHE_EVENT_LOGGER_PREFIX, eventLoggerClassName );
System.out.print( props );
-
+
CompositeCacheManager manager = CompositeCacheManager.getUnconfiguredInstance();
CompositeCacheConfigurator configurator = new CompositeCacheConfigurator( manager );
@@ -51,4 +51,27 @@
assertNotNull( "Should have an auxcache.", result );
assertNotNull( "Should have an event logger.", result.cacheEventLogger );
}
+
+ /**
+ * Verify that we can parse the spool chunk size
+ */
+ public void testParseSpoolChunkSize_Normal()
+ {
+ // SETUP
+ String regionName = "MyRegion";
+ int chunkSize = 5;
+
+ Properties props = new Properties();
+ props.put( "jcs.default", "" );
+ props.put( "jcs.default.cacheattributes.SpoolChunkSize", String.valueOf( chunkSize ) );
+
+ CompositeCacheManager manager = CompositeCacheManager.getUnconfiguredInstance();
+
+ // DO WORK
+ manager.configure( props );
+
+ // VERIFY
+ CompositeCache cache = manager.getCache( regionName );
+ assertEquals( "Wrong chunkSize", cache.getCacheAttributes().getSpoolChunkSize(), chunkSize );
+ }
}
Modified: jakarta/jcs/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/xdocs/changes.xml?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/xdocs/changes.xml (original)
+++ jakarta/jcs/trunk/xdocs/changes.xml Wed Aug 27 12:44:33 2008
@@ -23,8 +23,8 @@
</release>
<release version="1.3.2.0" date="in SVN">
<action dev="asmuts" type="update"> Added eventLogging to major
- auxiliaries and to the auxiliary factory interface. This allows you to
- time and monitor the internal working of the cache.</action>
+ auxiliaries and to the auxiliary factory interface. This allows you
+ to time and monitor the internal working of the cache.</action>
<action dev="asmuts" type="update"> Added the ability to inject custom
serializers into auxiliary caches.</action>
<action dev="asmuts" type="fix" issue="JCS-40" due-to="Niall Gallagher"> Added a
@@ -32,6 +32,8 @@
and the remote cache.</action>
<action dev="asmuts" type="fix" issue="JCS-38" due-to="Timothy Cronin"> Added
getSource to IElementEvent interface.</action>
+ <action dev="asmuts" type="update" issue="JCS-44" due-to="Maxim Gordienko"> Made
+ spool chunk size configurable.</action>
</release>
<release version="1.3.1.0" date="in SVN">
<action dev="asmuts" type="update"> Added getMultiple() method to
---------------------------------------------------------------------
To unsubscribe, e-mail: jcs-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jcs-dev-help@jakarta.apache.org