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/12/05 21:06:26 UTC
svn commit: r723841 - in /jakarta/jcs/trunk: src/java/org/apache/jcs/access/
src/java/org/apache/jcs/auxiliary/disk/
src/java/org/apache/jcs/auxiliary/disk/jdbc/
src/java/org/apache/jcs/auxiliary/disk/jdbc/mysql/
src/java/org/apache/jcs/engine/ src/jav...
Author: asmuts
Date: Fri Dec 5 12:06:25 2008
New Revision: 723841
URL: http://svn.apache.org/viewvc?rev=723841&view=rev
Log:
Fixed a bug in the MySQL Table Optimizer. It was unable to get a connection to the database when the disk cache was configured to use a shared pool.
Added:
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessFactory.java
Modified:
jakarta/jcs/trunk/src/java/org/apache/jcs/access/CacheAccess.java
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/AbstractDiskCache.java
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCache.java
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCacheAttributes.java
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessAttributes.java
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessManager.java
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLDiskCache.java
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLDiskCacheFactory.java
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLDiskCacheManager.java
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLTableOptimizer.java
jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheEventQueue.java
jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheListeners.java
jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheWatchRepairable.java
jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCache.java
jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLTableOptimizerManualTester.java
jakarta/jcs/trunk/xdocs/changes.xml
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/access/CacheAccess.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/access/CacheAccess.java?rev=723841&r1=723840&r2=723841&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/access/CacheAccess.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/access/CacheAccess.java Fri Dec 5 12:06:25 2008
@@ -47,7 +47,7 @@
* An instance of this class is tied to a specific cache region. Static methods are provided to get
* such instances.
* <p>
- * Using this class you can retrieve an item, the item's wrapper, the element configuration, put an
+ * Using this class you can retrieve an item, the item's wrapper, and the element's configuration. You can also put an
* item in the cache, remove an item, and clear a region.
* <p>
* The JCS class is the preferred way to access these methods.
@@ -58,9 +58,7 @@
/** The logger. */
private static final Log log = LogFactory.getLog( CacheAccess.class );
- /**
- * Cache manager use by the various forms of defineRegion and getAccess
- */
+ /** Cache manager use by the various forms of defineRegion and getAccess */
private static CompositeCacheManager cacheMgr;
/**
@@ -280,7 +278,7 @@
* <p>
* The last access time in the ElementAttributes should be current.
* <p>
- * @param pattern key search patern
+ * @param pattern key search pattern
* @return a map of Object key to ICacheElement element, or empty map if no keys match the pattern
*/
public Map getMatchingCacheElements( String pattern )
@@ -326,7 +324,7 @@
}
/**
- * Constructs a cache element with these attribures, and puts it into the cache.
+ * Constructs a cache element with these attributes, and puts it into the cache.
* <p>
* If the key or the value is null, and InvalidArgumentException is thrown.
* <p>
@@ -363,7 +361,7 @@
}
/**
- * Destory the region and all objects within it. After calling this method, the Cache object can
+ * Destroy the region and all objects within it. After calling this method, the Cache object can
* no longer be used as it will be closed.
* <p>
* @exception CacheException
@@ -440,14 +438,14 @@
/**
* ResetAttributes allows for some of the attributes of a region to be reset in particular
- * expiration time attriubtes, time to live, default time to live and idle time, and event
+ * expiration time attributes, time to live, default time to live and idle time, and event
* handlers. Changing default settings on groups and regions will not affect existing objects.
* Only object loaded after the reset will use the new defaults. If no name argument is
* provided, the reset is applied to the region.
* <p>
* NOTE: this method is does not reset the attributes for items already in the cache. It could
* potentially do this for items in memory, and maybe on disk (which would be slow) but not
- * remote items. Rather than have unpredicatble behavior, this method just sets the default
+ * remote items. Rather than have unpredictable behavior, this method just sets the default
* attributes.
* <p>
* TODO is should be renamed "setDefaultElementAttributes"
@@ -467,7 +465,7 @@
/**
* This method is does not reset the attributes for items already in the cache. It could
* potentially do this for items in memory, and maybe on disk (which would be slow) but not
- * remote items. Rather than have unpredicatble behavior, this method just sets the default
+ * remote items. Rather than have unpredictable behavior, this method just sets the default
* attributes. Items subsequently put into the cache will use these defaults if they do not
* specify specific attributes.
* <p>
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/AbstractDiskCache.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/AbstractDiskCache.java?rev=723841&r1=723840&r2=723841&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/AbstractDiskCache.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/AbstractDiskCache.java Fri Dec 5 12:06:25 2008
@@ -496,7 +496,7 @@
}
catch ( InterruptedException ex )
{
- log.error( ex );
+ log.error( "The Shutdown Spool Process was interrupted.", ex );
}
log.info( "In dispose, destroying event queue." );
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCache.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCache.java?rev=723841&r1=723840&r2=723841&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCache.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCache.java Fri Dec 5 12:06:25 2008
@@ -135,7 +135,7 @@
}
// This initializes the pool access.
- initializePoolAccess( cattr, compositeCacheManager );
+ setPoolAccess( initializePoolAccess( cattr, compositeCacheManager ) );
// Initialization finished successfully, so set alive to true.
alive = true;
@@ -151,6 +151,7 @@
protected JDBCDiskCachePoolAccess initializePoolAccess( JDBCDiskCacheAttributes cattr,
ICompositeCacheManager compositeCacheManager )
{
+ JDBCDiskCachePoolAccess poolAccess = null;
if ( cattr.getConnectionPoolName() != null )
{
JDBCDiskCachePoolAccessManager manager = JDBCDiskCachePoolAccessManager.getInstance( compositeCacheManager
@@ -161,22 +162,7 @@
{
try
{
- try
- {
- // org.gjt.mm.mysql.Driver
- Class.forName( cattr.getDriverClassName() );
- }
- catch ( ClassNotFoundException e )
- {
- log.error( "Couldn't find class for driver [" + cattr.getDriverClassName() + "]", e );
- }
-
- poolAccess = new JDBCDiskCachePoolAccess( cattr.getName() );
-
- poolAccess.setupDriver( cattr.getUrl() + cattr.getDatabase(), cattr.getUserName(), cattr.getPassword(),
- cattr.getMaxActive() );
-
- poolAccess.logDriverStats();
+ poolAccess = JDBCDiskCachePoolAccessFactory.createPoolAccess( cattr );
}
catch ( Exception e )
{
@@ -207,7 +193,7 @@
Connection con;
try
{
- con = poolAccess.getConnection();
+ con = getPoolAccess().getConnection();
}
catch ( SQLException e )
{
@@ -413,7 +399,7 @@
}
catch ( SQLException e2 )
{
- log.error( "e2 sql [" + sqlU + "] Exception: ", e2 );
+ log.error( "e2 sql [" + sqlU + "] Exception: ", e2 );
}
}
@@ -430,7 +416,7 @@
Connection con;
try
{
- con = poolAccess.getConnection();
+ con = getPoolAccess().getConnection();
}
catch ( SQLException e )
{
@@ -525,7 +511,7 @@
String selectString = "select ELEMENT from " + getJdbcDiskCacheAttributes().getTableName()
+ " where REGION = ? and CACHE_KEY = ?";
- Connection con = poolAccess.getConnection();
+ Connection con = getPoolAccess().getConnection();
try
{
PreparedStatement psSelect = null;
@@ -630,7 +616,7 @@
String selectString = "select CACHE_KEY, ELEMENT from " + getJdbcDiskCacheAttributes().getTableName()
+ " where REGION = ? and CACHE_KEY like ?";
- Connection con = poolAccess.getConnection();
+ Connection con = getPoolAccess().getConnection();
try
{
PreparedStatement psSelect = null;
@@ -716,13 +702,13 @@
{
pattern = pattern.replaceAll( "\\.\\+", "%" );
pattern = pattern.replaceAll( "\\.", "_" );
-
+
if ( log.isDebugEnabled() )
{
log.debug( "pattern = [" + pattern + "]" );
}
-
- return pattern;
+
+ return pattern;
}
/**
@@ -748,7 +734,7 @@
+ " where REGION = ? and CACHE_KEY like ?";
partial = true;
}
- Connection con = poolAccess.getConnection();
+ Connection con = getPoolAccess().getConnection();
PreparedStatement psSelect = null;
try
{
@@ -769,7 +755,7 @@
}
catch ( SQLException e )
{
- log.error( "Problem creating statement. sql [" + sql+ "]", e );
+ log.error( "Problem creating statement. sql [" + sql + "]", e );
alive = false;
}
finally
@@ -809,7 +795,7 @@
try
{
String sql = "delete from " + getJdbcDiskCacheAttributes().getTableName() + " where REGION = ?";
- Connection con = poolAccess.getConnection();
+ Connection con = getPoolAccess().getConnection();
PreparedStatement psDelete = null;
try
{
@@ -878,7 +864,7 @@
String sql = "delete from " + getJdbcDiskCacheAttributes().getTableName()
+ " where IS_ETERNAL = ? and REGION = ? and ? > SYSTEM_EXPIRE_TIME_SECONDS";
- Connection con = poolAccess.getConnection();
+ Connection con = getPoolAccess().getConnection();
PreparedStatement psDelete = null;
try
{
@@ -945,7 +931,7 @@
{
try
{
- poolAccess.shutdownDriver();
+ getPoolAccess().shutdownDriver();
}
catch ( Exception e )
{
@@ -974,7 +960,7 @@
Connection con;
try
{
- con = poolAccess.getConnection();
+ con = getPoolAccess().getConnection();
}
catch ( SQLException e1 )
{
@@ -1093,7 +1079,7 @@
{
getMatchingCount++;
}
-
+
/**
* @param jdbcDiskCacheAttributes The jdbcDiskCacheAttributes to set.
*/
@@ -1155,12 +1141,12 @@
se = new StatElement();
se.setName( "Active DB Connections" );
- se.setData( "" + poolAccess.getNumActiveInPool() );
+ se.setData( "" + getPoolAccess().getNumActiveInPool() );
elems.add( se );
se = new StatElement();
se.setName( "Idle DB Connections" );
- se.setData( "" + poolAccess.getNumIdleInPool() );
+ se.setData( "" + getPoolAccess().getNumIdleInPool() );
elems.add( se );
se = new StatElement();
@@ -1223,6 +1209,23 @@
}
/**
+ * @param poolAccess the poolAccess to set
+ */
+ protected void setPoolAccess( JDBCDiskCachePoolAccess poolAccess )
+ {
+ this.poolAccess = poolAccess;
+ }
+
+ /**
+ * Public so managers can access it.
+ * @return the poolAccess
+ */
+ public JDBCDiskCachePoolAccess getPoolAccess()
+ {
+ return poolAccess;
+ }
+
+ /**
* For debugging.
* <p>
* @return this.getStats();
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCacheAttributes.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCacheAttributes.java?rev=723841&r1=723840&r2=723841&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCacheAttributes.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCacheAttributes.java Fri Dec 5 12:06:25 2008
@@ -76,11 +76,11 @@
* separate section as follows. Assuming the name is "MyPool":
*
* <pre>
- * jcs.connectionpool.MyPool.attributes.userName=MyUserName
- * jcs.connectionpool.MyPool.attributes.password=MyPassword
- * jcs.connectionpool.MyPool.attributes.url=MyUrl
- * jcs.connectionpool.MyPool.attributes.maxActive=MyMaxActive
- * jcs.connectionpool.MyPool.attributes.driverClassName=MyDriverClassName
+ * jcs.jdbcconnectionpool.MyPool.attributes.userName=MyUserName
+ * jcs.jdbcconnectionpool.MyPool.attributes.password=MyPassword
+ * jcs.jdbcconnectionpool.MyPool.attributes.url=MyUrl
+ * jcs.jdbcconnectionpool.MyPool.attributes.maxActive=MyMaxActive
+ * jcs.jdbcconnectionpool.MyPool.attributes.driverClassName=MyDriverClassName
* </pre>
*/
private String connectionPoolName;
@@ -184,7 +184,8 @@
/**
* If this is true then the disk cache will check to see if the item already exists in the
- * database. If it is false, it will try to insert. If the isnert fails it will try to update.
+ * database. If it is false, it will try to insert. If the insert fails it will try to update.
+ * <p>
* @param testBeforeInsert The testBeforeInsert to set.
*/
public void setTestBeforeInsert( boolean testBeforeInsert )
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessAttributes.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessAttributes.java?rev=723841&r1=723840&r2=723841&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessAttributes.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessAttributes.java Fri Dec 5 12:06:25 2008
@@ -150,6 +150,7 @@
buf.append( "\nJDBCDiskCachePoolAccessAttributes" );
buf.append( "\n UserName [" + getUserName() + "]" );
buf.append( "\n Url [" + getUrl() + "]" );
+ buf.append( "\n PoolName [" + getPoolName() + "]" );
buf.append( "\n Database [" + getDatabase() + "]" );
buf.append( "\n DriverClassName [" + getDriverClassName() + "]" );
buf.append( "\n MaxActive [" + getMaxActive() + "]" );
Added: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessFactory.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessFactory.java?rev=723841&view=auto
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessFactory.java (added)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessFactory.java Fri Dec 5 12:06:25 2008
@@ -0,0 +1,85 @@
+package org.apache.jcs.auxiliary.disk.jdbc;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/** This is just a helper util. */
+public class JDBCDiskCachePoolAccessFactory
+{
+ /** The local logger. */
+ private final static Log log = LogFactory.getLog( JDBCDiskCachePoolAccessFactory.class );
+
+ /**
+ * Creates a JDBCDiskCachePoolAccess object from the JDBCDiskCachePoolAccessAttributes. This is
+ * used by the connection pool manager.
+ * <p>
+ * @param poolAttributes
+ * @return JDBCDiskCachePoolAccess
+ * @throws Exception
+ */
+ public static JDBCDiskCachePoolAccess createPoolAccess( JDBCDiskCachePoolAccessAttributes poolAttributes )
+ throws Exception
+ {
+ return createPoolAccess( poolAttributes.getDriverClassName(), poolAttributes.getPoolName(), poolAttributes
+ .getUrl()
+ + poolAttributes.getDatabase(), poolAttributes.getUserName(), poolAttributes.getPassword(), poolAttributes
+ .getMaxActive() );
+ }
+
+ /**
+ * Creates a JDBCDiskCachePoolAccess object from the JDBCDiskCacheAttributes. Use this when not
+ * using the connection pool manager.
+ * <p>
+ * @param cattr
+ * @return JDBCDiskCachePoolAccess
+ * @throws Exception
+ */
+ public static JDBCDiskCachePoolAccess createPoolAccess( JDBCDiskCacheAttributes cattr )
+ throws Exception
+ {
+ return createPoolAccess( cattr.getDriverClassName(), cattr.getName(), cattr.getUrl() + cattr.getDatabase(),
+ cattr.getUserName(), cattr.getPassword(), cattr.getMaxActive() );
+ }
+
+ /**
+ * Creates a pool access object and registers the driver.
+ * <p>
+ * @param driverClassName
+ * @param poolName
+ * @param fullURL = (url + database)
+ * @param userName
+ * @param password
+ * @param maxActive
+ * @return JDBCDiskCachePoolAccess
+ * @throws Exception
+ */
+ public static JDBCDiskCachePoolAccess createPoolAccess( String driverClassName, String poolName, String fullURL,
+ String userName, String password, int maxActive )
+ throws Exception
+ {
+ JDBCDiskCachePoolAccess poolAccess = null;
+
+ try
+ {
+ // org.gjt.mm.mysql.Driver
+ Class.forName( driverClassName );
+ }
+ catch ( ClassNotFoundException e )
+ {
+ log.error( "Couldn't find class for driver [" + driverClassName + "]", e );
+ }
+
+ poolAccess = new JDBCDiskCachePoolAccess( poolName );
+
+ poolAccess.setupDriver( fullURL, userName, password, maxActive );
+
+ poolAccess.logDriverStats();
+
+ if ( log.isInfoEnabled() )
+ {
+ log.info( "Created: " + poolAccess );
+ }
+
+ return poolAccess;
+ }
+}
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessManager.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessManager.java?rev=723841&r1=723840&r2=723841&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessManager.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessManager.java Fri Dec 5 12:06:25 2008
@@ -83,34 +83,25 @@
JDBCDiskCachePoolAccessAttributes poolAttributes = configurePoolAccessAttributes( poolName );
try
{
- try
- {
- // org.gjt.mm.mysql.Driver
- Class.forName( poolAttributes.getDriverClassName() );
- }
- catch ( ClassNotFoundException e )
+ poolAccess = JDBCDiskCachePoolAccessFactory.createPoolAccess( poolAttributes );
+
+ if ( log.isInfoEnabled() )
{
- log.error( "Couldn't find class for driver [" + poolAttributes.getDriverClassName() + "]", e );
+ log.info( "Created shared pooled access for pool name [" + poolName + "]." );
}
-
- poolAccess = new JDBCDiskCachePoolAccess( poolAttributes.getPoolName() );
-
- poolAccess.setupDriver( poolAttributes.getUrl() + poolAttributes.getDatabase(), poolAttributes
- .getUserName(), poolAttributes.getPassword(), poolAttributes.getMaxActive() );
-
- poolAccess.logDriverStats();
-
pools.put( poolName, poolAccess );
}
catch ( Exception e )
{
- log.error( "Problem creating connection pool.", e );
+ log.error( "Problem creating connection poolfor pool name [" + poolName + "].", e );
}
}
return poolAccess;
}
+
+
/**
* Configures the attributes using the properties.
* <p>
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLDiskCache.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLDiskCache.java?rev=723841&r1=723840&r2=723841&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLDiskCache.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLDiskCache.java Fri Dec 5 12:06:25 2008
@@ -47,7 +47,7 @@
private final static Log log = LogFactory.getLog( MySQLDiskCache.class );
/** config attributes */
- MySQLDiskCacheAttributes mySQLDiskCacheAttributes;
+ private MySQLDiskCacheAttributes mySQLDiskCacheAttributes;
/**
* Delegates to the super and makes use of the MySQL specific parameters used for scheduled
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLDiskCacheFactory.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLDiskCacheFactory.java?rev=723841&r1=723840&r2=723841&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLDiskCacheFactory.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLDiskCacheFactory.java Fri Dec 5 12:06:25 2008
@@ -35,7 +35,7 @@
implements AuxiliaryCacheFactory
{
/** name of the factory */
- private String name = "JDBCDiskCacheFactory";
+ private String name = "MySQLDiskCacheFactory";
/**
* This factory method should create an instance of the mysqlcache.
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLDiskCacheManager.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLDiskCacheManager.java?rev=723841&r1=723840&r2=723841&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLDiskCacheManager.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLDiskCacheManager.java Fri Dec 5 12:06:25 2008
@@ -28,6 +28,7 @@
import org.apache.jcs.auxiliary.AuxiliaryCache;
import org.apache.jcs.auxiliary.disk.jdbc.JDBCDiskCacheAttributes;
import org.apache.jcs.auxiliary.disk.jdbc.JDBCDiskCacheManagerAbstractTemplate;
+import org.apache.jcs.auxiliary.disk.jdbc.JDBCDiskCachePoolAccess;
import org.apache.jcs.auxiliary.disk.jdbc.TableState;
import org.apache.jcs.auxiliary.disk.jdbc.mysql.util.ScheduleFormatException;
import org.apache.jcs.auxiliary.disk.jdbc.mysql.util.ScheduleParser;
@@ -143,11 +144,11 @@
*/
protected AuxiliaryCache createJDBCDiskCache( JDBCDiskCacheAttributes cattr, TableState tableState )
{
- AuxiliaryCache raf = new MySQLDiskCache( (MySQLDiskCacheAttributes) cattr, tableState, getCompositeCacheManager() );
+ MySQLDiskCache diskCache = new MySQLDiskCache( (MySQLDiskCacheAttributes) cattr, tableState, getCompositeCacheManager() );
- scheduleOptimizations( (MySQLDiskCacheAttributes) cattr, tableState );
+ scheduleOptimizations( (MySQLDiskCacheAttributes) cattr, tableState, diskCache.getPoolAccess() );
- return raf;
+ return diskCache;
}
/**
@@ -168,10 +169,11 @@
/**
* For each time in the optimization schedule, this calls schedule Optimizaiton.
* <p>
- * @param attributes
- * @param tableState
+ * @param attributes configuration propeties.
+ * @param tableState for noting optimization in progress, etc.
+ * @param poolAccess access to the pool
*/
- protected void scheduleOptimizations( MySQLDiskCacheAttributes attributes, TableState tableState )
+ protected void scheduleOptimizations( MySQLDiskCacheAttributes attributes, TableState tableState, JDBCDiskCachePoolAccess poolAccess )
{
if ( attributes != null )
{
@@ -183,7 +185,7 @@
+ "] on schdule [" + attributes.getOptimizationSchedule() + "]" );
}
- MySQLTableOptimizer optimizer = new MySQLTableOptimizer( attributes, tableState );
+ MySQLTableOptimizer optimizer = new MySQLTableOptimizer( attributes, tableState, poolAccess );
// loop through the dates.
try
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLTableOptimizer.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLTableOptimizer.java?rev=723841&r1=723840&r2=723841&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLTableOptimizer.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLTableOptimizer.java Fri Dec 5 12:06:25 2008
@@ -26,13 +26,12 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.jcs.auxiliary.disk.jdbc.JDBCDiskCacheAttributes;
import org.apache.jcs.auxiliary.disk.jdbc.JDBCDiskCachePoolAccess;
import org.apache.jcs.auxiliary.disk.jdbc.TableState;
/**
* The MySQL Table Optimizer can optimize MySQL tables. It knows how to optimize for MySQL datbases
- * in particular and how to repari the table if it is corrupted in the process.
+ * in particular and how to repair the table if it is corrupted in the process.
* <p>
* We will probably be able to abstract out a generic optimizer interface from this class in the
* future.
@@ -58,46 +57,16 @@
* <p>
* @param attributes
* @param tableState We mark the table status as optimizing when this is happening.
+ * @param poolAccess access to the database
*/
- public MySQLTableOptimizer( MySQLDiskCacheAttributes attributes, TableState tableState )
+ public MySQLTableOptimizer( MySQLDiskCacheAttributes attributes, TableState tableState,
+ JDBCDiskCachePoolAccess poolAccess )
{
setTableName( attributes.getTableName() );
this.tableState = tableState;
- /**
- * This initializes the pool access.
- */
- initializePoolAccess( attributes );
- }
- /**
- * Register the driver and create a pool.
- * <p>
- * @param cattr
- */
- protected void initializePoolAccess( JDBCDiskCacheAttributes cattr )
- {
- try
- {
- try
- {
- // org.gjt.mm.mysql.Driver
- Class.forName( cattr.getDriverClassName() );
- }
- catch ( ClassNotFoundException e )
- {
- log.error( "Couldn't find class for driver [" + cattr.getDriverClassName() + "]", e );
- }
-
- poolAccess = new JDBCDiskCachePoolAccess( cattr.getName() );
-
- poolAccess.setupDriver( cattr.getUrl() + cattr.getDatabase(), cattr.getUserName(), cattr.getPassword(),
- cattr.getMaxActive() );
- }
- catch ( Exception e )
- {
- log.error( "Problem getting connection.", e );
- }
+ this.poolAccess = poolAccess;
}
/**
@@ -162,7 +131,7 @@
tableState.setState( TableState.OPTIMIZATION_RUNNING );
if ( log.isInfoEnabled() )
{
- log.debug( "Optimizing table [" + this.getTableName() + "]" );
+ log.info( "Optimizing table [" + this.getTableName() + "]" );
}
Connection con;
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheEventQueue.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheEventQueue.java?rev=723841&r1=723840&r2=723841&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheEventQueue.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheEventQueue.java Fri Dec 5 12:06:25 2008
@@ -129,7 +129,7 @@
/**
* Initializes the queue.
- * <,p>
+ * <p>
* @param listener
* @param listenerId
* @param cacheName
@@ -251,7 +251,7 @@
log.info( "Destroying queue, stats = " + getStatistics() );
}
- // sychronize on queue so the thread will not wait forever,
+ // Synchronize on queue so the thread will not wait forever,
// and then interrupt the QueueProcessor
if ( processorThread != null )
@@ -278,7 +278,7 @@
}
/**
- * This adds a put event ot the queue. When it is processed, the element will be put to the
+ * This adds a put event to the queue. When it is processed, the element will be put to the
* listener.
* <p>
* @param ce The feature to be added to the PutEvent attribute
@@ -445,10 +445,10 @@
}
/**
- * This method returns semi structured data on this queue.
+ * This method returns semi-structured data on this queue.
* <p>
- * (non-Javadoc)
* @see org.apache.jcs.engine.behavior.ICacheEventQueue#getStatistics()
+ * @return information on the status and history of the queue
*/
public IStats getStatistics()
{
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheListeners.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheListeners.java?rev=723841&r1=723840&r2=723841&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheListeners.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheListeners.java Fri Dec 5 12:06:25 2008
@@ -30,7 +30,7 @@
*/
public class CacheListeners
{
- /** Description of the Field */
+ /** The cache using the queue. */
public final ICache cache;
/** Map ICacheListener to ICacheEventQueue */
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheWatchRepairable.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheWatchRepairable.java?rev=723841&r1=723840&r2=723841&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheWatchRepairable.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheWatchRepairable.java Fri Dec 5 12:06:25 2008
@@ -35,7 +35,7 @@
* Intercepts the requests to the underlying ICacheObserver object so that the
* listeners can be recorded locally for remote connection recovery purposes.
* (Durable subscription like those in JMS is not implemented at this stage for
- * it can be too expensive on the runtime.)
+ * it can be too expensive.)
*/
public class CacheWatchRepairable
implements ICacheObserver
@@ -95,8 +95,7 @@
throws IOException
{
// Record the added cache listener locally, regardless of whether the
- // remote add-listener
- // operation succeeds or fails.
+ // remote add-listener operation succeeds or fails.
synchronized ( cacheMap )
{
Set listenerSet = (Set) cacheMap.get( cacheName );
@@ -122,8 +121,7 @@
throws IOException
{
// Record the added cache listener locally, regardless of whether the
- // remote add-listener
- // operation succeeds or fails.
+ // remote add-listener operation succeeds or fails.
synchronized ( cacheMap )
{
for ( Iterator itr = cacheMap.values().iterator(); itr.hasNext(); )
@@ -150,8 +148,7 @@
log.info( "removeCacheListener, cacheName [" + cacheName + "]" );
}
// Record the removal locally, regardless of whether the remote
- // remove-listener
- // operation succeeds or fails.
+ // remove-listener operation succeeds or fails.
synchronized ( cacheMap )
{
Set listenerSet = (Set) cacheMap.get( cacheName );
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=723841&r1=723840&r2=723841&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 Fri Dec 5 12:06:25 2008
@@ -309,12 +309,9 @@
}
if ( cacheAttr.getUseLateral() && cacheElement.getElementAttributes().getIsLateral() && !localOnly )
{
- // later if we want a multicast, possibly delete abnormal
- // broadcaster
// DISTRIBUTE LATERALLY
// Currently always multicast even if the value is
- // unchanged,
- // just to cause the cache item to move to the front.
+ // unchanged, to cause the cache item to move to the front.
aux.update( cacheElement );
if ( log.isDebugEnabled() )
{
@@ -344,8 +341,8 @@
}
/**
- * Writes the specified element to any disk auxilliaries. Might want to rename this "overflow"
- * incase the hub wants to do something else.
+ * Writes the specified element to any disk auxiliaries. Might want to rename this "overflow" in
+ * case the hub wants to do something else.
* <p>
* If JCS is not configured to use the disk as a swap, that is if the the
* CompositeCacheAttribute diskUsagePattern is not SWAP_ONLY, then the item will not be spooled.
@@ -904,7 +901,7 @@
log.debug( "Attempting to get from aux [" + aux.getCacheName() + "] which is of type: "
+ cacheType );
}
-
+
try
{
elementsFromAuxiliary.putAll( aux.getMatching( pattern ) );
@@ -913,7 +910,7 @@
{
log.error( "Error getting from aux", e );
}
-
+
if ( log.isDebugEnabled() )
{
log.debug( "Got CacheElements: " + elementsFromAuxiliary );
@@ -957,7 +954,7 @@
missCountExpired++;
- // This will tell the remotes to remove the item
+ // This will tell the remote caches to remove the item
// based on the element's expiration policy. The elements attributes
// associated with the item when it created govern its behavior
// everywhere.
@@ -982,8 +979,8 @@
}
/**
- * Copies the item to memory if the memory size is greater than 0. Only spool if the memory cache
- * size is greater than 0, else the item will immediately get put into purgatory.
+ * Copies the item to memory if the memory size is greater than 0. Only spool if the memory
+ * cache size is greater than 0, else the item will immediately get put into purgatory.
* <p>
* @param element
* @throws IOException
@@ -1743,7 +1740,7 @@
}
/**
- * Rerturns the key matcher used by get matching.
+ * Returns the key matcher used by get matching.
* <p>
* @return keyMatcher
*/
@@ -1787,8 +1784,7 @@
/**
* This returns the stats.
* <p>
- * (non-Javadoc)
- * @see java.lang.Object#toString()
+ * @return getStats()
*/
public String toString()
{
Modified: jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLTableOptimizerManualTester.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLTableOptimizerManualTester.java?rev=723841&r1=723840&r2=723841&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLTableOptimizerManualTester.java (original)
+++ jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/jdbc/mysql/MySQLTableOptimizerManualTester.java Fri Dec 5 12:06:25 2008
@@ -19,10 +19,11 @@
* under the License.
*/
-import org.apache.jcs.auxiliary.disk.jdbc.TableState;
-
import junit.framework.TestCase;
+import org.apache.jcs.auxiliary.disk.jdbc.JDBCDiskCachePoolAccessFactory;
+import org.apache.jcs.auxiliary.disk.jdbc.TableState;
+
/**
* Hand run tests for the MySQL table optimizer.
* <p>
@@ -31,12 +32,15 @@
public class MySQLTableOptimizerManualTester
extends TestCase
{
-
/**
* Run the optimization against live a table.
+ * <p>
+ * @throws Exception
*/
public void testBasicOptimization()
+ throws Exception
{
+ // SETUP
MySQLDiskCacheAttributes attributes = new MySQLDiskCacheAttributes();
attributes.setUserName( "java" );
attributes.setPassword( "letmein" );
@@ -44,18 +48,24 @@
attributes.setDriverClassName( "org.gjt.mm.mysql.Driver" );
String tableName = "JCS_STORE_FLIGHT_OPTION_ITINERARY";
attributes.setTableName( tableName );
- TableState tableState = new TableState( tableName);
+ TableState tableState = new TableState( tableName );
- MySQLTableOptimizer optimizer = new MySQLTableOptimizer( attributes, tableState );
+ MySQLTableOptimizer optimizer = new MySQLTableOptimizer( attributes, tableState, JDBCDiskCachePoolAccessFactory
+ .createPoolAccess( attributes ) );
+ // DO WORK
optimizer.optimizeTable();
}
/**
* Run the optimization against live a table.
+ * <p>
+ * @throws Exception
*/
public void testBasicOptimizationUnknownTable()
+ throws Exception
{
+ // SETUP
MySQLDiskCacheAttributes attributes = new MySQLDiskCacheAttributes();
attributes.setUserName( "java" );
attributes.setPassword( "letmein" );
@@ -63,11 +73,12 @@
attributes.setDriverClassName( "org.gjt.mm.mysql.Driver" );
String tableName = "DOESNTEXIST";
attributes.setTableName( tableName );
- TableState tableState = new TableState( tableName);
+ TableState tableState = new TableState( tableName );
- MySQLTableOptimizer optimizer = new MySQLTableOptimizer( attributes, tableState );
+ MySQLTableOptimizer optimizer = new MySQLTableOptimizer( attributes, tableState, JDBCDiskCachePoolAccessFactory
+ .createPoolAccess( attributes ) );
+ // DO WORK
optimizer.optimizeTable();
}
-
}
Modified: jakarta/jcs/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/xdocs/changes.xml?rev=723841&r1=723840&r2=723841&view=diff
==============================================================================
--- jakarta/jcs/trunk/xdocs/changes.xml (original)
+++ jakarta/jcs/trunk/xdocs/changes.xml Fri Dec 5 12:06:25 2008
@@ -21,15 +21,19 @@
<body>
<release version="1.4-dev" date="in SVN">
</release>
+ <release version="1.3.2.7" date="2008-12-05" description="tempbuild">
+ <action dev="asmuts" type="fix">Fixed bug in the MySQLDiskCache
+ optimizer. It can now use a shared pool.</action>
+ </release>
<release version="1.3.2.6" date="2008-12-01" description="tempbuild">
- <action dev="asmuts" type="fix">Fixed balking bug in getMatching( String pattern ) API.
- </action>
- <action dev="asmuts" type="fix">Fixed event naming bug in getMatching( String pattern ) API.
- </action>
+ <action dev="asmuts" type="fix">Fixed balking bug in
+ getMatching( String pattern ) API.</action>
+ <action dev="asmuts" type="fix">Fixed event naming bug in
+ getMatching( String pattern ) API.</action>
</release>
<release version="1.3.2.5" date="2008-11-20" description="tempbuild">
- <action dev="asmuts" type="update">Added a getMatching( String pattern ) API.
- </action>
+ <action dev="asmuts" type="update">Added a getMatching( String
+ pattern ) API.</action>
</release>
<release version="1.3.2.4" date="2008-?" description="tempbuild">
<action dev="asmuts" type="update">Added the ability to inject a
---------------------------------------------------------------------
To unsubscribe, e-mail: jcs-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jcs-dev-help@jakarta.apache.org