[infinispan-commits] Infinispan SVN: r2192 - in trunk: cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/connectionfactory and 6 other directories.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Wed Aug 11 06:48:48 EDT 2010


Author: mircea.markus
Date: 2010-08-11 06:48:47 -0400 (Wed, 11 Aug 2010)
New Revision: 2192

Modified:
   trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/AbstractJdbcCacheStoreConfig.java
   trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/AbstractNonDelegatingJdbcCacheStoreConfig.java
   trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/connectionfactory/PooledConnectionFactory.java
   trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/mixed/JdbcMixedCacheStore.java
   trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/stringbased/DefaultKey2StringMapper.java
   trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/stringbased/JdbcStringBasedCacheStore.java
   trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/stringbased/JdbcStringBasedCacheStoreConfig.java
   trunk/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/mixed/JdbcMixedCacheStoreConfigTest.java
   trunk/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/mixed/JdbcMixedCacheStoreTest.java
   trunk/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/stringbased/JdbcStringBasedCacheStoreTest.java
   trunk/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/stringbased/JdbcStringBasedCacheStoreTest2.java
   trunk/cachestore/jdbc/src/test/resources/log4j.xml
   trunk/core/src/main/java/org/infinispan/loaders/LockSupportCacheStore.java
   trunk/core/src/main/java/org/infinispan/loaders/LockSupportCacheStoreConfig.java
Log:
migrated 2186 to trunk

Modified: trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/AbstractJdbcCacheStoreConfig.java
===================================================================
--- trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/AbstractJdbcCacheStoreConfig.java	2010-08-11 09:54:01 UTC (rev 2191)
+++ trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/AbstractJdbcCacheStoreConfig.java	2010-08-11 10:48:47 UTC (rev 2192)
@@ -67,4 +67,11 @@
       result.connectionFactoryConfig = connectionFactoryConfig.clone();
       return result;
    }
+
+   @Override
+   public String toString() {
+      return "AbstractJdbcCacheStoreConfig{" +
+            "connectionFactoryConfig=" + connectionFactoryConfig +
+            "} " + super.toString();
+   }
 }

Modified: trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/AbstractNonDelegatingJdbcCacheStoreConfig.java
===================================================================
--- trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/AbstractNonDelegatingJdbcCacheStoreConfig.java	2010-08-11 09:54:01 UTC (rev 2191)
+++ trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/AbstractNonDelegatingJdbcCacheStoreConfig.java	2010-08-11 10:48:47 UTC (rev 2192)
@@ -161,4 +161,14 @@
       result.tableManipulation = tableManipulation.clone();
       return result;
    }
+
+   @Override
+   public String toString() {
+      return "AbstractNonDelegatingJdbcCacheStoreConfig{" +
+            "lockConcurrencyLevel=" + lockConcurrencyLevel +
+            ", lockAcquistionTimeout=" + lockAcquistionTimeout +
+            ", tableManipulation=" + tableManipulation +
+            ", manageConnectionFactory=" + manageConnectionFactory +
+            "} " + super.toString();
+   }
 }

Modified: trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/connectionfactory/PooledConnectionFactory.java
===================================================================
--- trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/connectionfactory/PooledConnectionFactory.java	2010-08-11 09:54:01 UTC (rev 2191)
+++ trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/connectionfactory/PooledConnectionFactory.java	2010-08-11 10:48:47 UTC (rev 2192)
@@ -84,7 +84,7 @@
       try {
          DataSources.destroy(pooledDataSource);
          if (log.isTraceEnabled()) {
-            log.debug("Sucessfully stopped PooledConnectionFactory.");
+            log.debug("Successfully stopped PooledConnectionFactory.");
          }
       }
       catch (SQLException sqle) {
@@ -95,16 +95,9 @@
    @Override
    public Connection getConnection() throws CacheLoaderException {
       try {
-         if (log.isTraceEnabled()) {
-            log.trace("DataSource before checkout (NumBusyConnectionsAllUsers) : " + pooledDataSource.getNumBusyConnectionsAllUsers());
-            log.trace("DataSource before checkout (NumConnectionsAllUsers) : " + pooledDataSource.getNumConnectionsAllUsers());
-         }
+         logBefore(true);
          Connection connection = pooledDataSource.getConnection();
-         if (log.isTraceEnabled()) {
-            log.trace("DataSource after checkout (NumBusyConnectionsAllUsers) : " + pooledDataSource.getNumBusyConnectionsAllUsers());
-            log.trace("DataSource after checkout (NumConnectionsAllUsers) : " + pooledDataSource.getNumConnectionsAllUsers());
-            log.trace("Connection checked out: " + connection);
-         }
+         logAfter(connection, true);
          return connection;
       } catch (SQLException e) {
          throw new CacheLoaderException("Failed obtaining connection from PooledDataSource", e);
@@ -113,12 +106,35 @@
 
    @Override
    public void releaseConnection(Connection conn) {
+      logBefore(false);
       JdbcUtil.safeClose(conn);
+      logAfter(conn, false);
    }
 
    public ComboPooledDataSource getPooledDataSource() {
       return pooledDataSource;
    }
 
+   private void logBefore(boolean checkout) {
+      if (log.isTraceEnabled()) {
+         String operation = checkout ? "checkout" : "release";
+         try {
+            log.trace("DataSource before " + operation + " (NumBusyConnectionsAllUsers) : " + pooledDataSource.getNumBusyConnectionsAllUsers() + ", (NumConnectionsAllUsers) : " + pooledDataSource.getNumConnectionsAllUsers());
+         } catch (SQLException e) {                                                                                                                
+            log.warn("Unexpected", e);
+         }
+      }
+   }
 
+   private void logAfter(Connection connection, boolean checkout)  {
+      if (log.isTraceEnabled()) {
+         String operation = checkout ? "checkout" : "release";
+         try {
+            log.trace("DataSource after " + operation + " (NumBusyConnectionsAllUsers) : " + pooledDataSource.getNumBusyConnectionsAllUsers() + ", (NumConnectionsAllUsers) : " + pooledDataSource.getNumConnectionsAllUsers());
+         } catch (SQLException e) {
+            log.warn("Unexpected", e);
+         }
+         log.trace("Connection " + operation + " : " + connection);
+      }
+   }
 }

Modified: trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/mixed/JdbcMixedCacheStore.java
===================================================================
--- trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/mixed/JdbcMixedCacheStore.java	2010-08-11 09:54:01 UTC (rev 2191)
+++ trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/mixed/JdbcMixedCacheStore.java	2010-08-11 10:48:47 UTC (rev 2192)
@@ -33,6 +33,8 @@
 import org.infinispan.loaders.jdbc.connectionfactory.ConnectionFactoryConfig;
 import org.infinispan.loaders.jdbc.stringbased.JdbcStringBasedCacheStore;
 import org.infinispan.marshall.StreamingMarshaller;
+import org.infinispan.util.logging.Log;
+import org.infinispan.util.logging.LogFactory;
 
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
@@ -66,6 +68,8 @@
 @CacheLoaderMetadata(configurationClass = JdbcMixedCacheStoreConfig.class)
 public class JdbcMixedCacheStore extends AbstractCacheStore {
 
+   private static Log log = LogFactory.getLog(JdbcMixedCacheStore.class);
+
    private JdbcMixedCacheStoreConfig config;
    private JdbcBinaryCacheStore binaryCacheStore = new JdbcBinaryCacheStore();
    private JdbcStringBasedCacheStore stringBasedCacheStore = new JdbcStringBasedCacheStore();
@@ -112,6 +116,10 @@
    public Set<InternalCacheEntry> loadAll() throws CacheLoaderException {
       Set<InternalCacheEntry> fromBuckets = binaryCacheStore.loadAll();
       Set<InternalCacheEntry> fromStrings = stringBasedCacheStore.loadAll();
+      if (log.isTraceEnabled()) {
+         log.trace("Loaded from bucket: " + fromBuckets);
+         log.trace("Loaded from string: " + fromStrings);
+      }
       fromBuckets.addAll(fromStrings);
       return fromBuckets;
    }

Modified: trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/stringbased/DefaultKey2StringMapper.java
===================================================================
--- trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/stringbased/DefaultKey2StringMapper.java	2010-08-11 09:54:01 UTC (rev 2191)
+++ trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/stringbased/DefaultKey2StringMapper.java	2010-08-11 10:48:47 UTC (rev 2192)
@@ -26,23 +26,23 @@
  * primitive wrappers(e.g. Integer, Long etc).
  *
  * @author Mircea.Markus at jboss.com
+ * @deprecated since 4.1 when {@link org.infinispan.loaders.jdbc.stringbased.DefaultTwoWayKey2StringMapper}
+ * which is a replacement this implementation. 
  */
-public class DefaultKey2StringMapper implements Key2StringMapper {
+public class DefaultKey2StringMapper implements TwoWayKey2StringMapper {
 
    /**
     * Returns true if this is an primitive wrapper, false otherwise.
     */
    public boolean isSupportedType(Class key) {
-      return key == String.class ||
-            key == Short.class ||
-            key == Byte.class ||
-            key == Long.class ||
-            key == Integer.class ||
-            key == Double.class ||
-            key == Float.class ||
-            key == Boolean.class;
+      return DefaultTwoWayKey2StringMapper.isPrimitive(key);
    }
 
+   @Override
+   public Object getKeyMapping(String key) {
+      return null;
+   }
+
    /**
     * Returns key.toString. As key being a primitive wrapper, this will ensure that it is unique.
     */
@@ -52,4 +52,5 @@
       }
       return key.toString();
    }
+
 }

Modified: trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/stringbased/JdbcStringBasedCacheStore.java
===================================================================
--- trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/stringbased/JdbcStringBasedCacheStore.java	2010-08-11 09:54:01 UTC (rev 2191)
+++ trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/stringbased/JdbcStringBasedCacheStore.java	2010-08-11 10:48:47 UTC (rev 2192)
@@ -22,6 +22,7 @@
 package org.infinispan.loaders.jdbc.stringbased;
 
 import org.infinispan.Cache;
+import org.infinispan.config.Configuration;
 import org.infinispan.container.entries.InternalCacheEntry;
 import org.infinispan.container.entries.InternalCacheValue;
 import org.infinispan.io.ByteBuffer;
@@ -62,10 +63,20 @@
  * {@link org.infinispan.loaders.jdbc.binary.JdbcBinaryCacheStore}} whenever it is possible, as is has a better performance.
  * One scenario in which this is not possible to use it though, is when you can't write an {@link Key2StringMapper}} to map the
  * keys to to string objects (e.g. when you don't have control over the types of the keys, for whatever reason).
+ * <p/>
+ * <b>Preload</b>.In order to support preload functionality the store needs to read the string keys from the database and transform them
+ * into the corresponding key objects. {@link org.infinispan.loaders.jdbc.stringbased.Key2StringMapper} only supports
+ * key to string transformation(one way); in order to be able to use preload one needs to specify an
+ * {@link org.infinispan.loaders.jdbc.stringbased.TwoWayKey2StringMapper}, which extends {@link org.infinispan.loaders.jdbc.stringbased.Key2StringMapper} and
+ * allows bidirectional transformation.
+ * <p/>
+ * <b>Rehashing</b>. When a node leaves/joins, Infinispan moves around persistent state as part of rehashing process.
+ * For this it needs access to the underlaying key objects, so if distribution is used, the mapper needs to be an
+ * {@link org.infinispan.loaders.jdbc.stringbased.TwoWayKey2StringMapper} otherwise the cache won't start (same constraint as with preloading).
  *
  * @author Mircea.Markus at jboss.com
  * @see Key2StringMapper
- * @see DefaultKey2StringMapper
+ * @see DefaultTwoWayKey2StringMapper
  */
 @CacheLoaderMetadata(configurationClass = JdbcStringBasedCacheStoreConfig.class)
 public class JdbcStringBasedCacheStore extends LockSupportCacheStore {
@@ -95,11 +106,19 @@
       super.start();
       if (config.isManageConnectionFactory()) {
          String connectionFactoryClass = config.getConnectionFactoryConfig().getConnectionFactoryClass();
+         if (log.isTraceEnabled()) log.trace("Using managed connection factory: " + connectionFactoryClass);
          ConnectionFactory connectionFactory = ConnectionFactory.getConnectionFactory(connectionFactoryClass);
          connectionFactory.start(config.getConnectionFactoryConfig());
          doConnectionFactoryInitialization(connectionFactory);
       }
       this.key2StringMapper = config.getKey2StringMapper();
+      if (log.isTraceEnabled()) log.trace("Using key2StringMapper: " + key2StringMapper.getClass().getName());
+      if (isUsingPreload()) {
+         enforceTwoWayMapper("preload");
+      } 
+      if (isDistributed()) {
+         enforceTwoWayMapper("distribution/rehashing");
+      }
       dmHelper = new DataManipulationHelper(connectionFactory, tableManipulation, marshaller) {
 
          @Override
@@ -111,31 +130,34 @@
          public void loadAllProcess(ResultSet rs, Set<InternalCacheEntry> result) throws SQLException, CacheLoaderException {
             InputStream inputStream = rs.getBinaryStream(1);
             InternalCacheValue icv = (InternalCacheValue) JdbcUtil.unmarshall(getMarshaller(), inputStream);
-            Object key = rs.getObject(2);
+            String keyStr = rs.getString(2);
+            Object key = ((TwoWayKey2StringMapper) key2StringMapper).getKeyMapping(keyStr);
             result.add(icv.toInternalCacheEntry(key));
          }
 
          @Override
          public void loadAllKeysProcess(ResultSet rs, Set<Object> keys, Set<Object> keysToExclude) throws SQLException, CacheLoaderException {
-            Object k = rs.getObject(1);
-            if (includeKey(k, keysToExclude)) keys.add(k);
+            String keyStr = rs.getString(1);
+            Object key = ((TwoWayKey2StringMapper) key2StringMapper).getKeyMapping(keyStr);
+            if (includeKey(key, keysToExclude)) {
+               keys.add(key);
+            }
          }
 
          @Override
          public void toStreamProcess(ResultSet rs, InputStream is, ObjectOutput objectOutput) throws CacheLoaderException, SQLException, IOException {
             InternalCacheValue icv = (InternalCacheValue) JdbcUtil.unmarshall(getMarshaller(), is);
-            Object key = rs.getObject(2);
+            String key = rs.getString(2);//key is a string
             marshaller.objectToObjectStream(icv.toInternalCacheEntry(key), objectOutput);
          }
 
          public boolean fromStreamProcess(Object objFromStream, PreparedStatement ps, ObjectInput objectInput) throws SQLException, CacheLoaderException {
             if (objFromStream instanceof InternalCacheEntry) {
                InternalCacheEntry se = (InternalCacheEntry) objFromStream;
-               String key = key2StringMapper.getStringMapping(se.getKey());
                ByteBuffer buffer = JdbcUtil.marshall(getMarshaller(), se.toInternalCacheValue());
                ps.setBinaryStream(1, buffer.getStream(), buffer.getLength());
                ps.setLong(2, se.getExpiryTime());
-               ps.setString(3, key);
+               ps.setString(3, (String) se.getKey());
                return true;
             } else {
                return false;
@@ -148,6 +170,7 @@
    public void stop() throws CacheLoaderException {
       tableManipulation.stop();
       if (config.isManageConnectionFactory()) {
+         if (log.isTraceEnabled()) log.trace("Stopping mananged connection factory: " + connectionFactory);
          connectionFactory.stop();
       }
    }
@@ -260,7 +283,6 @@
       }
    }
 
-
    @Override
    protected InternalCacheEntry loadLockSafe(Object key, String lockingKey) throws CacheLoaderException {
       Connection conn = null;
@@ -296,6 +318,7 @@
       }
    }
 
+
    public Class<? extends CacheLoaderConfig> getConfigurationClass() {
       return JdbcStringBasedCacheStoreConfig.class;
    }
@@ -329,4 +352,23 @@
    public TableManipulation getTableManipulation() {
       return tableManipulation;
    }
+
+   private void enforceTwoWayMapper(String where) throws CacheLoaderException {
+      if (!(key2StringMapper instanceof TwoWayKey2StringMapper)) {
+         String message = "In order for JdbcStringBasedCacheStore to support " + where + ", the Key2StringMapper " +
+               "needs to implement TwoWayKey2StringMapper. You should either make " + key2StringMapper.getClass().getName() +
+               " implement TwoWayKey2StringMapper or disable " + where + ". See [https://jira.jboss.org/browse/ISPN-579] for more details.";
+         log.error(message);
+         throw new CacheLoaderException(message);
+      }
+   }
+
+   public boolean isUsingPreload() {
+      return cache.getConfiguration() != null && cache.getConfiguration().getCacheLoaderManagerConfig() != null &&
+            cache.getConfiguration().getCacheLoaderManagerConfig().isPreload();
+   }
+
+   public boolean isDistributed() {
+      return cache.getConfiguration() != null && cache.getConfiguration().getCacheMode().isDistributed();
+   }
 }

Modified: trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/stringbased/JdbcStringBasedCacheStoreConfig.java
===================================================================
--- trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/stringbased/JdbcStringBasedCacheStoreConfig.java	2010-08-11 09:54:01 UTC (rev 2191)
+++ trunk/cachestore/jdbc/src/main/java/org/infinispan/loaders/jdbc/stringbased/JdbcStringBasedCacheStoreConfig.java	2010-08-11 10:48:47 UTC (rev 2192)
@@ -59,7 +59,7 @@
    public Key2StringMapper getKey2StringMapper() {
       if (key2StringMapper == null) {
          try {
-            key2StringMapper = DefaultKey2StringMapper.class.newInstance();
+            key2StringMapper = DefaultTwoWayKey2StringMapper.class.newInstance();
          } catch (Exception e) {
             throw new IllegalStateException("This should never happen", e);
          }
@@ -68,7 +68,7 @@
    }
 
    /**
-    * Name of the class implementing Key2StringMapper. The default value is {@link org.infinispan.loaders.jdbc.stringbased.DefaultKey2StringMapper}
+    * Name of the class implementing Key2StringMapper. The default value is {@link org.infinispan.loaders.jdbc.stringbased.DefaultTwoWayKey2StringMapper}
     *
     * @see org.infinispan.loaders.jdbc.stringbased.Key2StringMapper
     */
@@ -93,4 +93,11 @@
       result.key2StringMapper = key2StringMapper;
       return result;
    }
+
+   @Override
+   public String toString() {
+      return "JdbcStringBasedCacheStoreConfig{" +
+            "key2StringMapper=" + key2StringMapper +
+            "} " + super.toString();
+   }
 }

Modified: trunk/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/mixed/JdbcMixedCacheStoreConfigTest.java
===================================================================
--- trunk/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/mixed/JdbcMixedCacheStoreConfigTest.java	2010-08-11 09:54:01 UTC (rev 2191)
+++ trunk/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/mixed/JdbcMixedCacheStoreConfigTest.java	2010-08-11 10:48:47 UTC (rev 2192)
@@ -22,7 +22,7 @@
 package org.infinispan.loaders.jdbc.mixed;
 
 import org.infinispan.loaders.LockSupportCacheStoreConfig;
-import org.infinispan.loaders.jdbc.stringbased.PersonKey2StringMapper;
+import org.infinispan.loaders.jdbc.stringbased.DefaultTwoWayKey2StringMapper;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
@@ -83,8 +83,8 @@
    }
 
    public void testKey2StringMapper() {
-      config.setKey2StringMapperClass(PersonKey2StringMapper.class.getName());
-      assert config.getStringCacheStoreConfig().getKey2StringMapper().getClass().equals(PersonKey2StringMapper.class);
+      config.setKey2StringMapperClass(DefaultTwoWayKey2StringMapper.class.getName());
+      assert config.getStringCacheStoreConfig().getKey2StringMapper().getClass().equals(DefaultTwoWayKey2StringMapper.class);
    }
 
    public void testConcurrencyLevel() {

Modified: trunk/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/mixed/JdbcMixedCacheStoreTest.java
===================================================================
--- trunk/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/mixed/JdbcMixedCacheStoreTest.java	2010-08-11 09:54:01 UTC (rev 2191)
+++ trunk/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/mixed/JdbcMixedCacheStoreTest.java	2010-08-11 10:48:47 UTC (rev 2192)
@@ -32,6 +32,7 @@
 import org.infinispan.loaders.jdbc.connectionfactory.ConnectionFactory;
 import org.infinispan.loaders.jdbc.connectionfactory.ConnectionFactoryConfig;
 import org.infinispan.loaders.jdbc.stringbased.DefaultKey2StringMapper;
+import org.infinispan.loaders.jdbc.stringbased.DefaultTwoWayKey2StringMapper;
 import org.infinispan.loaders.jdbc.stringbased.Person;
 import org.infinispan.marshall.StreamingMarshaller;
 import org.infinispan.marshall.TestObjectStreamMarshaller;
@@ -73,7 +74,7 @@
       JdbcMixedCacheStoreConfig cacheStoreConfig = new JdbcMixedCacheStoreConfig(cfc, binaryTm, stringsTm);
       cacheStoreConfig.setPurgeSynchronously(true);
 
-      cacheStoreConfig.setKey2StringMapperClass(DefaultKey2StringMapper.class.getName());
+      cacheStoreConfig.setKey2StringMapperClass(DefaultTwoWayKey2StringMapper.class.getName());
       cacheStore = new JdbcMixedCacheStore();
       cacheStore.init(cacheStoreConfig, new CacheDelegate("aName"), getMarshaller());
       cacheStore.start();
@@ -140,14 +141,14 @@
       } finally {
          marshaller.finishObjectOutput(oo);
          out.close();
-         cacheStore.clear();         
+         cacheStore.clear();
       }
       assertRowCounts(0, 0);
-      
+
       ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
       ObjectInput oi = marshaller.startObjectInput(in, false);
       try {
-         cacheStore.fromStream(new UnclosableObjectInputStream(oi));         
+         cacheStore.fromStream(new UnclosableObjectInputStream(oi));
       } finally {
          marshaller.finishObjectInput(oi);
          in.close();
@@ -170,7 +171,7 @@
       cacheStore.store(forth);
       assertRowCounts(2, 2);
       Set<InternalCacheEntry> entries = cacheStore.loadAll();
-      assert entries.size() == 4;
+      assert entries.size() == 4 : "Expected 4 and got: " + entries;
       assert entries.contains(first);
       assert entries.contains(second);
       assert entries.contains(third);

Modified: trunk/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/stringbased/JdbcStringBasedCacheStoreTest.java
===================================================================
--- trunk/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/stringbased/JdbcStringBasedCacheStoreTest.java	2010-08-11 09:54:01 UTC (rev 2191)
+++ trunk/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/stringbased/JdbcStringBasedCacheStoreTest.java	2010-08-11 10:48:47 UTC (rev 2192)
@@ -44,7 +44,8 @@
       TableManipulation tm = UnitTestDatabaseManager.buildDefaultTableManipulation();
       JdbcStringBasedCacheStoreConfig config = new JdbcStringBasedCacheStoreConfig(connectionFactoryConfig, tm);
       JdbcStringBasedCacheStore stringBasedCacheStore = new JdbcStringBasedCacheStore();
-      stringBasedCacheStore.init(config, new CacheDelegate("aName"), getMarshaller());
+      CacheDelegate cache = new CacheDelegate("aName");
+      stringBasedCacheStore.init(config, cache, getMarshaller());
       stringBasedCacheStore.start();
       return stringBasedCacheStore;
    }

Modified: trunk/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/stringbased/JdbcStringBasedCacheStoreTest2.java
===================================================================
--- trunk/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/stringbased/JdbcStringBasedCacheStoreTest2.java	2010-08-11 09:54:01 UTC (rev 2191)
+++ trunk/cachestore/jdbc/src/test/java/org/infinispan/loaders/jdbc/stringbased/JdbcStringBasedCacheStoreTest2.java	2010-08-11 10:48:47 UTC (rev 2192)
@@ -61,7 +61,7 @@
       tableManipulation = UnitTestDatabaseManager.buildDefaultTableManipulation();
       cfc = UnitTestDatabaseManager.getUniqueConnectionFactoryConfig();
       JdbcStringBasedCacheStoreConfig config = new JdbcStringBasedCacheStoreConfig(cfc, tableManipulation);
-      config.setKey2StringMapperClass(PersonKey2StringMapper.class.getName());
+      config.setKey2StringMapperClass(TwoWayKey2StringMapper.class.getName());
       config.setPurgeSynchronously(true);
       cacheStore = new JdbcStringBasedCacheStore();
       Cache<?, ?> mockCache = EasyMock.createNiceMock(Cache.class);

Modified: trunk/cachestore/jdbc/src/test/resources/log4j.xml
===================================================================
--- trunk/cachestore/jdbc/src/test/resources/log4j.xml	2010-08-11 09:54:01 UTC (rev 2191)
+++ trunk/cachestore/jdbc/src/test/resources/log4j.xml	2010-08-11 10:48:47 UTC (rev 2192)
@@ -48,6 +48,14 @@
       <priority value="INFO"/>
    </category>
 
+   <category name="org.infinispan.loaders">
+      <priority value="TRACE"/>
+   </category>
+
+   <category name="org.infinispan.loaders.jdbc.connectionfactory.PooledConnectionFactory">
+      <priority value="WARN"/>
+   </category>
+
    <category name="com.mchange">
       <priority value="TRACE"/>
    </category>

Modified: trunk/core/src/main/java/org/infinispan/loaders/LockSupportCacheStore.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/loaders/LockSupportCacheStore.java	2010-08-11 09:54:01 UTC (rev 2191)
+++ trunk/core/src/main/java/org/infinispan/loaders/LockSupportCacheStore.java	2010-08-11 10:48:47 UTC (rev 2192)
@@ -43,6 +43,10 @@
       super.start();
       if (config == null)
          throw new CacheLoaderException("Null config. Possible reason is not calling super.init(...)");
+      if (log.isTraceEnabled()) {
+         log.trace("Starting cache with config:" + config);
+      }
+
       locks = new StripedLock(config.getLockConcurrencyLevel());
       globalLockTimeoutMillis = config.getLockAcquistionTimeout();
    }

Modified: trunk/core/src/main/java/org/infinispan/loaders/LockSupportCacheStoreConfig.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/loaders/LockSupportCacheStoreConfig.java	2010-08-11 09:54:01 UTC (rev 2191)
+++ trunk/core/src/main/java/org/infinispan/loaders/LockSupportCacheStoreConfig.java	2010-08-11 10:48:47 UTC (rev 2192)
@@ -39,4 +39,12 @@
       testImmutability("lockAcquistionTimeout");
       this.lockAcquistionTimeout = lockAcquistionTimeout;
    }
+
+   @Override
+   public String toString() {
+      return "LockSupportCacheStoreConfig{" +
+            "lockConcurrencyLevel=" + lockConcurrencyLevel +
+            ", lockAcquistionTimeout=" + lockAcquistionTimeout +
+            "} " + super.toString();
+   }
 }



More information about the infinispan-commits mailing list