Author: tv
Date: Sun May 11 16:20:49 2014
New Revision: 1593811
URL: http://svn.apache.org/r1593811
Log:
Fix JCS-115: JDBCDiskCachePoolAccessManager is thread hostile
Modified:
commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/jdbc/JDBCDiskCache.java
commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessManager.java
commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessManagerUnitTest.java
commons/proper/jcs/trunk/src/changes/changes.xml
Modified:
commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/jdbc/JDBCDiskCache.java
URL:
http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/jdbc/JDBCDiskCache.java?rev=1593811&r1=1593810&r2=1593811&view=diff
==============================================================================
---
commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/jdbc/JDBCDiskCache.java
(original)
+++
commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/jdbc/JDBCDiskCache.java
Sun May 11 16:20:49 2014
@@ -152,9 +152,10 @@ public class JDBCDiskCache<K extends Ser
JDBCDiskCachePoolAccess poolAccess1 = null;
if ( cattr.getConnectionPoolName() != null )
{
- JDBCDiskCachePoolAccessManager manager =
JDBCDiskCachePoolAccessManager.getInstance( compositeCacheManager
- .getConfigurationProperties() );
- poolAccess1 = manager.getJDBCDiskCachePoolAccess(
cattr.getConnectionPoolName() );
+ JDBCDiskCachePoolAccessManager manager =
JDBCDiskCachePoolAccessManager.getInstance();
+ poolAccess1 = manager.getJDBCDiskCachePoolAccess(
+ cattr.getConnectionPoolName(),
+ compositeCacheManager.getConfigurationProperties() );
}
else
{
Modified:
commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessManager.java
URL:
http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessManager.java?rev=1593811&r1=1593810&r2=1593811&view=diff
==============================================================================
---
commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessManager.java
(original)
+++
commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessManager.java
Sun May 11 16:20:49 2014
@@ -57,32 +57,23 @@ public class JDBCDiskCachePoolAccessMana
private static final Log log = LogFactory.getLog(
JDBCDiskCachePoolAccessManager.class );
/**
- * You can specify the properties to be used to configure the thread pool.
Setting this post
- * initialization will have no effect.
- */
- private Properties props = null;
-
- /**
* Singleton, private
- * <p>
- * @param props
*/
- private JDBCDiskCachePoolAccessManager( Properties props )
+ private JDBCDiskCachePoolAccessManager()
{
- this.setProps( props );
+ // empty
}
/**
* returns a singleton instance
* <p>
- * @param props
* @return JDBCDiskCachePoolAccessManager
*/
- public static synchronized JDBCDiskCachePoolAccessManager getInstance(
Properties props )
+ public static synchronized JDBCDiskCachePoolAccessManager getInstance()
{
if ( instance == null )
{
- instance = new JDBCDiskCachePoolAccessManager( props );
+ instance = new JDBCDiskCachePoolAccessManager();
}
return instance;
}
@@ -90,16 +81,17 @@ public class JDBCDiskCachePoolAccessMana
/**
* Returns a pool for the name if one has been created. Otherwise it
creates a pool.
* <p>
- * @param poolName
+ * @param poolName the name of the pool
+ * @param props the configuration properties for the pool
* @return JDBCDiskCachePoolAccess
*/
- public synchronized JDBCDiskCachePoolAccess getJDBCDiskCachePoolAccess(
String poolName )
+ public synchronized JDBCDiskCachePoolAccess getJDBCDiskCachePoolAccess(
String poolName, Properties props )
{
JDBCDiskCachePoolAccess poolAccess = pools.get( poolName );
if ( poolAccess == null )
{
- JDBCDiskCachePoolAccessAttributes poolAttributes =
configurePoolAccessAttributes( poolName );
+ JDBCDiskCachePoolAccessAttributes poolAttributes =
configurePoolAccessAttributes( poolName, props );
try
{
poolAccess = JDBCDiskCachePoolAccessFactory.createPoolAccess(
poolAttributes );
@@ -124,15 +116,16 @@ public class JDBCDiskCachePoolAccessMana
/**
* Configures the attributes using the properties.
* <p>
- * @param poolName
+ * @param poolName the name of the pool
+ * @param props the configuration properties for the pool
* @return JDBCDiskCachePoolAccessAttributes
*/
- protected JDBCDiskCachePoolAccessAttributes configurePoolAccessAttributes(
String poolName )
+ protected JDBCDiskCachePoolAccessAttributes configurePoolAccessAttributes(
String poolName, Properties props )
{
JDBCDiskCachePoolAccessAttributes poolAttributes = new
JDBCDiskCachePoolAccessAttributes();
String poolAccessAttributePrefix = POOL_CONFIGURATION_PREFIX +
poolName + ATTRIBUTE_PREFIX;
- PropertySetter.setProperties( poolAttributes, getProps(),
poolAccessAttributePrefix + "." );
+ PropertySetter.setProperties( poolAttributes, props,
poolAccessAttributePrefix + "." );
poolAttributes.setPoolName( poolName );
@@ -142,20 +135,4 @@ public class JDBCDiskCachePoolAccessMana
}
return poolAttributes;
}
-
- /**
- * @param props the props to set
- */
- protected void setProps( Properties props )
- {
- this.props = props;
- }
-
- /**
- * @return the props
- */
- protected Properties getProps()
- {
- return props;
- }
}
Modified:
commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessManagerUnitTest.java
URL:
http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessManagerUnitTest.java?rev=1593811&r1=1593810&r2=1593811&view=diff
==============================================================================
---
commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessManagerUnitTest.java
(original)
+++
commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/auxiliary/disk/jdbc/JDBCDiskCachePoolAccessManagerUnitTest.java
Sun May 11 16:20:49 2014
@@ -50,12 +50,10 @@ public class JDBCDiskCachePoolAccessMana
props.put( prefix + ".maxActive", String.valueOf( maxActive ) );
props.put( prefix + ".driverClassName", driverClassName );
- JDBCDiskCachePoolAccessManager manager =
JDBCDiskCachePoolAccessManager.getInstance( props );
- // in case another test has initilized this. See: JCS-114, JCS-115
- manager.setProps( props );
+ JDBCDiskCachePoolAccessManager manager =
JDBCDiskCachePoolAccessManager.getInstance();
// DO WORK
- JDBCDiskCachePoolAccessAttributes result =
manager.configurePoolAccessAttributes( poolName );
+ JDBCDiskCachePoolAccessAttributes result =
manager.configurePoolAccessAttributes( poolName, props );
// VERIFY
assertEquals( "Wrong url value", url, result.getUrl() );
@@ -91,9 +89,7 @@ public class JDBCDiskCachePoolAccessMana
props.put( prefix + ".maxActive", String.valueOf( maxActive ) );
props.put( prefix + ".driverClassName", driverClassName );
- JDBCDiskCachePoolAccessManager manager =
JDBCDiskCachePoolAccessManager.getInstance( props );
- // in case another test has initilized this. See: JCS-114, JCS-115
- manager.setProps( props );
+ JDBCDiskCachePoolAccessManager manager =
JDBCDiskCachePoolAccessManager.getInstance();
System.setProperty( "hsqldb.cache_scale", "8" );
@@ -106,7 +102,7 @@ public class JDBCDiskCachePoolAccessMana
HsqlSetupTableUtil.setupTABLE( cConn, "JCSTESTTABLE_ACCESS" );
// DO WORK
- JDBCDiskCachePoolAccess result = manager.getJDBCDiskCachePoolAccess(
poolName );
+ JDBCDiskCachePoolAccess result = manager.getJDBCDiskCachePoolAccess(
poolName, props );
// VERIFY
assertNotNull( "Should have an access class", result );
Modified: commons/proper/jcs/trunk/src/changes/changes.xml
URL:
http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/changes/changes.xml?rev=1593811&r1=1593810&r2=1593811&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/changes/changes.xml (original)
+++ commons/proper/jcs/trunk/src/changes/changes.xml Sun May 11 16:20:49 2014
@@ -20,6 +20,9 @@
</properties>
<body>
<release version="2.0" date="unreleased" description="JDK 1.6
based major release">
+ <action issue="JCS-115" dev="tv" type="fix" due-to="Sebastian
Bazley">
+ JDBCDiskCachePoolAccessManager is thread hostile
+ </action>
<action issue="JCS-118" dev="olamy" type="add" due-to="Romain
Manni-Bucau">
Add jcache implementation
</action>