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 2014/05/11 18:20:51 UTC
svn commit: r1593811 - in /commons/proper/jcs/trunk:
commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/jdbc/
commons-jcs-core/src/test/java/org/apache/commons/jcs/auxiliary/disk/jdbc/
src/changes/
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>