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 2015/12/04 12:13:24 UTC
svn commit: r1717932 - in /commons/proper/jcs/trunk/commons-jcs-core/src:
main/java/org/apache/commons/jcs/auxiliary/lateral/socket/tcp/
main/java/org/apache/commons/jcs/auxiliary/remote/http/client/
main/java/org/apache/commons/jcs/utils/discovery/ te...
Author: tv
Date: Fri Dec 4 11:13:24 2015
New Revision: 1717932
URL: http://svn.apache.org/viewvc?rev=1717932&view=rev
Log:
Address issues reported by Findbugs
Modified:
commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/lateral/socket/tcp/LateralTCPListener.java
commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/remote/http/client/RemoteHttpCacheMonitor.java
commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryReceiver.java
commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/auxiliary/disk/DiskTestObject.java
commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/auxiliary/disk/block/BlockDiskCacheSteadyLoadTest.java
commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/auxiliary/disk/jdbc/mysql/MySQLDiskCacheHsqlBackedUnitTest.java
commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/engine/memory/fifo/FIFOMemoryCacheUnitTest.java
Modified: commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/lateral/socket/tcp/LateralTCPListener.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/lateral/socket/tcp/LateralTCPListener.java?rev=1717932&r1=1717931&r2=1717932&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/lateral/socket/tcp/LateralTCPListener.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/lateral/socket/tcp/LateralTCPListener.java Fri Dec 4 11:13:24 2015
@@ -19,6 +19,23 @@ package org.apache.commons.jcs.auxiliary
* under the License.
*/
+import java.io.EOFException;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import java.net.InetAddress;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.net.SocketException;
+import java.net.SocketTimeoutException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.atomic.AtomicBoolean;
+
import org.apache.commons.jcs.access.exception.CacheException;
import org.apache.commons.jcs.auxiliary.lateral.LateralElementDescriptor;
import org.apache.commons.jcs.auxiliary.lateral.behavior.ILateralCacheListener;
@@ -34,20 +51,6 @@ import org.apache.commons.jcs.utils.thre
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.SocketTimeoutException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
/**
* Listens for connections from other TCP lateral caches and handles them. The initialization method
* starts a listening thread, which creates a socket server. When messages are received they are
@@ -97,10 +100,10 @@ public class LateralTCPListener<K, V>
private long listenerId = CacheInfo.listenerId;
/** is this shut down? */
- private boolean shutdown = false;
+ private AtomicBoolean shutdown;
/** is this terminated? */
- private boolean terminated = false;
+ private AtomicBoolean terminated;
/**
* Gets the instance attribute of the LateralCacheTCPListener class.
@@ -155,8 +158,8 @@ public class LateralTCPListener<K, V>
pooledExecutor = Executors.newCachedThreadPool(
new DaemonThreadFactory("JCS-LateralTCPListener-"));
- terminated = false;
- shutdown = false;
+ terminated = new AtomicBoolean(false);
+ shutdown = new AtomicBoolean(false);
log.info( "Listening on port " + port );
@@ -167,10 +170,9 @@ public class LateralTCPListener<K, V>
receiver.setDaemon( true );
receiver.start();
}
- catch ( Exception ex )
+ catch ( IOException ex )
{
- log.error( ex );
- throw new IllegalStateException( ex.getMessage() );
+ throw new IllegalStateException( ex );
}
}
@@ -371,16 +373,13 @@ public class LateralTCPListener<K, V>
}
// TODO handle active deregistration, rather than passive detection
- synchronized (this)
- {
- terminated = true;
- }
+ terminated.set(true);
}
@Override
public synchronized void dispose()
{
- terminated = true;
+ terminated.set(true);
notify();
pooledExecutor.shutdownNow();
@@ -519,17 +518,15 @@ public class LateralTCPListener<K, V>
inner: while (true)
{
// Check to see if we've been asked to exit, and exit
- synchronized (LateralTCPListener.this)
+ if (terminated.get())
{
- if (terminated)
+ if (log.isDebugEnabled())
{
- if (log.isDebugEnabled())
- {
- log.debug("Thread terminated, exiting gracefully");
- }
- break outer;
+ log.debug("Thread terminated, exiting gracefully");
}
+ break outer;
}
+
try
{
socket = serverSocket.accept();
@@ -641,11 +638,11 @@ public class LateralTCPListener<K, V>
}
}
}
- catch ( java.io.EOFException e )
+ catch ( EOFException e )
{
log.info( "Caught java.io.EOFException closing connection." + e.getMessage() );
}
- catch ( java.net.SocketException e )
+ catch ( SocketException e )
{
log.info( "Caught java.net.SocketException closing connection." + e.getMessage() );
}
@@ -753,14 +750,13 @@ public class LateralTCPListener<K, V>
@Override
public void shutdown()
{
- if ( !shutdown )
+ if ( shutdown.compareAndSet(false, true) )
{
- shutdown = true;
-
if ( log.isInfoEnabled() )
{
log.info( "Shutting down TCP Lateral receiver." );
}
+
receiver.interrupt();
}
else
Modified: commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/remote/http/client/RemoteHttpCacheMonitor.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/remote/http/client/RemoteHttpCacheMonitor.java?rev=1717932&r1=1717931&r2=1717932&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/remote/http/client/RemoteHttpCacheMonitor.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/remote/http/client/RemoteHttpCacheMonitor.java Fri Dec 4 11:13:24 2015
@@ -19,66 +19,33 @@ package org.apache.commons.jcs.auxiliary
* under the License.
*/
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.commons.jcs.auxiliary.AbstractAuxiliaryCacheMonitor;
import org.apache.commons.jcs.auxiliary.remote.http.client.behavior.IRemoteHttpCacheClient;
import org.apache.commons.jcs.engine.CacheStatus;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.io.Serializable;
-import java.util.HashSet;
-import java.util.Set;
/**
* Upon the notification of a connection error, the monitor changes to operate in a time driven
* mode. That is, it attempts to recover the connections on a periodic basis. When all failed
* connections are restored, it changes back to the failure driven mode.
*/
-public class RemoteHttpCacheMonitor
- implements Runnable
+public class RemoteHttpCacheMonitor extends AbstractAuxiliaryCacheMonitor
{
- /** The logger */
- private static final Log log = LogFactory.getLog( RemoteHttpCacheMonitor.class );
-
/** The remote cache that we are monitoring */
private static RemoteHttpCacheMonitor instance;
- /** Time between checks */
- private static long idlePeriod = 3 * 1000;
-
/** Set of remote caches to monitor. This are added on error, if not before. */
- private final Set<RemoteHttpCache<?, ?>> remoteHttpCaches = new HashSet<RemoteHttpCache<?, ?>>();
-
- /**
- * Must make sure RemoteCacheMonitor is started before any remote error can be detected!
- */
- private boolean alright = true;
-
- /** Time driven mode */
- static final int TIME = 0;
-
- /** Error driven mode -- only check on health if there is an error */
- static final int ERROR = 1;
-
- /** The mode to use */
- static int mode = ERROR;
-
- /**
- * Configures the idle period between repairs.
- * <p>
- * @param idlePeriod The new idlePeriod value
- */
- public static void setIdlePeriod( long idlePeriod )
- {
- if ( idlePeriod > RemoteHttpCacheMonitor.idlePeriod )
- {
- RemoteHttpCacheMonitor.idlePeriod = idlePeriod;
- }
- }
+ private final ConcurrentHashMap<RemoteHttpCache<?, ?>, RemoteHttpCache<?, ?>> remoteHttpCaches =
+ new ConcurrentHashMap<RemoteHttpCache<?, ?>, RemoteHttpCache<?, ?>>();
/** Constructor for the RemoteCacheMonitor object */
private RemoteHttpCacheMonitor()
{
- super();
+ super("JCS-RemoteHttpCacheMonitor");
+ setIdlePeriod(3000L);
}
/**
@@ -86,7 +53,7 @@ public class RemoteHttpCacheMonitor
* <p>
* @return The instance value
*/
- static RemoteHttpCacheMonitor getInstance()
+ public static RemoteHttpCacheMonitor getInstance()
{
synchronized ( RemoteHttpCacheMonitor.class )
{
@@ -109,15 +76,19 @@ public class RemoteHttpCacheMonitor
{
log.info( "Notified of an error. " + remoteCache );
}
- bad();
- synchronized ( this )
- {
- remoteHttpCaches.add( remoteCache );
- notify();
- }
+
+ remoteHttpCaches.put( remoteCache, remoteCache );
+ notifyError();
}
- // Run forever.
+ /**
+ * Clean up all resources before shutdown
+ */
+ @Override
+ protected void dispose()
+ {
+ this.remoteHttpCaches.clear();
+ }
// Avoid the use of any synchronization in the process of monitoring for
// performance reasons.
@@ -125,124 +96,48 @@ public class RemoteHttpCacheMonitor
// just skip the monitoring until the next round.
/** Main processing method for the RemoteCacheMonitor object */
@Override
- public void run()
+ public void doWork()
{
- if ( log.isInfoEnabled() )
- {
- log.info( "Monitoring daemon started" );
- }
- do
+ // If any cache is in error, it strongly suggests all caches
+ // managed by the
+ // same RmicCacheManager instance are in error. So we fix
+ // them once and for all.
+ for (RemoteHttpCache<?, ?> remoteCache : this.remoteHttpCaches.values())
{
- if ( mode == ERROR )
- {
- synchronized ( this )
- {
- if ( alright )
- {
- // make this configurable, comment out wait to enter
- // time driven mode
- // Failure driven mode.
- try
- {
- if ( log.isDebugEnabled() )
- {
- log.debug( "FAILURE DRIVEN MODE: cache monitor waiting for error" );
- }
- wait();
- // wake up only if there is an error.
- }
- catch ( InterruptedException ignore )
- {
- // swallow
- }
- }
- }
- }
- else
- {
- if ( log.isDebugEnabled() )
- {
- log.debug( "TIME DRIVEN MODE: cache monitor sleeping for " + idlePeriod );
- }
- // Time driven mode: sleep between each round of recovery
- // attempt.
- // will need to test not just check status
- }
-
try
{
- Thread.sleep( idlePeriod );
- }
- catch ( InterruptedException ex )
- {
- // ignore;
- }
-
- // The "allright" flag must be false here.
- // Simply presume we can fix all the errors until proven otherwise.
- synchronized ( this )
- {
- alright = true;
- }
-
- // Make a copy
- Set<RemoteHttpCache<?, ?>> remoteCachesToExamine =
- new HashSet<RemoteHttpCache<?, ?>>();
- synchronized ( this )
- {
- for (RemoteHttpCache<?, ?> remoteCache : this.remoteHttpCaches)
+ if ( remoteCache.getStatus() == CacheStatus.ERROR )
{
- remoteCachesToExamine.add( remoteCache );
- }
- }
- // If any cache is in error, it strongly suggests all caches
- // managed by the
- // same RmicCacheManager instance are in error. So we fix
- // them once and for all.
- for (RemoteHttpCache<?, ?> remoteCache : remoteCachesToExamine)
- {
- try
- {
- if ( remoteCache.getStatus() == CacheStatus.ERROR )
- {
- RemoteHttpCacheAttributes attributes = remoteCache.getRemoteHttpCacheAttributes();
+ RemoteHttpCacheAttributes attributes = remoteCache.getRemoteHttpCacheAttributes();
- IRemoteHttpCacheClient<Serializable, Serializable> remoteService = RemoteHttpCacheManager.getInstance()
- .createRemoteHttpCacheClientForAttributes( attributes );
+ IRemoteHttpCacheClient<Serializable, Serializable> remoteService = RemoteHttpCacheManager.getInstance()
+ .createRemoteHttpCacheClientForAttributes( attributes );
- if ( log.isInfoEnabled() )
- {
- log.info( "Performing Alive check on service " + remoteService );
- }
- // If we can't fix them, just skip and re-try in
- // the next round.
- if ( remoteService.isAlive() )
- {
- remoteCache.fixCache( remoteService );
- }
- else
- {
- bad();
- }
- break;
+ if ( log.isInfoEnabled() )
+ {
+ log.info( "Performing Alive check on service " + remoteService );
}
+ // If we can't fix them, just skip and re-try in
+ // the next round.
+ if ( remoteService.isAlive() )
+ {
+ remoteCache.fixCache( remoteService );
+ }
+ else
+ {
+ allright.set(false);
+ }
+ break;
}
- catch ( Exception ex )
- {
- bad();
- // Problem encountered in fixing the caches managed by a
- // RemoteCacheManager instance.
- // Soldier on to the next RemoteHttpCache.
- log.error( ex );
- }
+ }
+ catch ( IOException ex )
+ {
+ allright.set(false);
+ // Problem encountered in fixing the caches managed by a
+ // RemoteCacheManager instance.
+ // Soldier on to the next RemoteHttpCache.
+ log.error( ex );
}
}
- while ( true );
- }
-
- /** Sets the "aright" flag to false in a critical section. */
- private synchronized void bad()
- {
- alright = false;
}
}
Modified: commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryReceiver.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryReceiver.java?rev=1717932&r1=1717931&r2=1717932&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryReceiver.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryReceiver.java Fri Dec 4 11:13:24 2015
@@ -19,14 +19,6 @@ package org.apache.commons.jcs.utils.dis
* under the License.
*/
-import org.apache.commons.jcs.engine.CacheInfo;
-import org.apache.commons.jcs.engine.behavior.IShutdownObserver;
-import org.apache.commons.jcs.io.ObjectInputStreamClassLoaderAware;
-import org.apache.commons.jcs.utils.discovery.UDPDiscoveryMessage.BroadcastType;
-import org.apache.commons.jcs.utils.threadpool.DaemonThreadFactory;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
@@ -36,6 +28,14 @@ import java.net.MulticastSocket;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
+import org.apache.commons.jcs.engine.CacheInfo;
+import org.apache.commons.jcs.engine.behavior.IShutdownObserver;
+import org.apache.commons.jcs.io.ObjectInputStreamClassLoaderAware;
+import org.apache.commons.jcs.utils.discovery.UDPDiscoveryMessage.BroadcastType;
+import org.apache.commons.jcs.utils.threadpool.DaemonThreadFactory;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
/** Receives UDP Discovery messages. */
public class UDPDiscoveryReceiver
implements Runnable, IShutdownObserver
@@ -150,7 +150,7 @@ public class UDPDiscoveryReceiver
throws IOException
{
final DatagramPacket packet = new DatagramPacket( mBuffer, mBuffer.length );
-
+ ObjectInputStream objectStream = null;
Object obj = null;
try
{
@@ -167,7 +167,7 @@ public class UDPDiscoveryReceiver
}
final ByteArrayInputStream byteStream = new ByteArrayInputStream( mBuffer, 0, packet.getLength() );
- final ObjectInputStream objectStream = new ObjectInputStreamClassLoaderAware( byteStream, null );
+ objectStream = new ObjectInputStreamClassLoaderAware( byteStream, null );
obj = objectStream.readObject();
if ( obj != null && obj instanceof UDPDiscoveryMessage )
@@ -188,6 +188,20 @@ public class UDPDiscoveryReceiver
{
log.error( "Error receiving multicast packet", e );
}
+ finally
+ {
+ if (objectStream != null)
+ {
+ try
+ {
+ objectStream.close();
+ }
+ catch (IOException e)
+ {
+ log.error( "Error closing object stream", e );
+ }
+ }
+ }
return obj;
}
Modified: commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/auxiliary/disk/DiskTestObject.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/auxiliary/disk/DiskTestObject.java?rev=1717932&r1=1717931&r2=1717932&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/auxiliary/disk/DiskTestObject.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/auxiliary/disk/DiskTestObject.java Fri Dec 4 11:13:24 2015
@@ -25,8 +25,7 @@ import java.util.Arrays;
/**
* Resembles a cached image.
*/
-public class DiskTestObject
- implements Serializable
+public class DiskTestObject implements Serializable
{
/** don't change */
private static final long serialVersionUID = 1L;
@@ -45,20 +44,35 @@ public class DiskTestObject
* @param id
* @param imageBytes
*/
- public DiskTestObject( Integer id, byte[] imageBytes )
+ public DiskTestObject(Integer id, byte[] imageBytes)
{
this.id = id;
this.imageBytes = imageBytes;
}
-
- public boolean equals(Object other) {
- if (other instanceof DiskTestObject) {
- DiskTestObject o = (DiskTestObject)other;
- if (id != null)
- return id.equals(o.id) && Arrays.equals(imageBytes, o.imageBytes);
- else if (id ==null && o.id == null)
- return Arrays.equals(imageBytes, o.imageBytes);
- }
- return false;
+
+ /**
+ * @see java.lang.Object#equals(Object other)
+ */
+ @Override
+ public boolean equals(Object other)
+ {
+ if (other instanceof DiskTestObject)
+ {
+ DiskTestObject o = (DiskTestObject) other;
+ if (id != null)
+ return id.equals(o.id) && Arrays.equals(imageBytes, o.imageBytes);
+ else if (id == null && o.id == null) return Arrays.equals(imageBytes, o.imageBytes);
+ }
+ return false;
+ }
+
+ /**
+ * @see java.lang.Object#hashCode()
+ */
+ @Override
+ public int hashCode()
+ {
+ return id.hashCode();
}
+
}
Modified: commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/auxiliary/disk/block/BlockDiskCacheSteadyLoadTest.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/auxiliary/disk/block/BlockDiskCacheSteadyLoadTest.java?rev=1717932&r1=1717931&r2=1717932&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/auxiliary/disk/block/BlockDiskCacheSteadyLoadTest.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/auxiliary/disk/block/BlockDiskCacheSteadyLoadTest.java Fri Dec 4 11:13:24 2015
@@ -19,14 +19,14 @@ package org.apache.commons.jcs.auxiliary
* under the License.
*/
+import java.text.DecimalFormat;
+import java.util.Random;
+
import junit.framework.TestCase;
+
import org.apache.commons.jcs.JCS;
import org.apache.commons.jcs.access.CacheAccess;
import org.apache.commons.jcs.auxiliary.disk.DiskTestObject;
-import org.apache.commons.jcs.utils.timing.ElapsedTimer;
-
-import java.text.DecimalFormat;
-import java.util.Random;
/**
* This allows you to put thousands of large objects into the disk cache and to force removes to
@@ -66,7 +66,7 @@ public class BlockDiskCacheSteadyLoadTes
CacheAccess<String, DiskTestObject> jcs = JCS.getInstance( ( numPerRun / 2 ) + "aSecond" );
- ElapsedTimer timer = new ElapsedTimer();
+// ElapsedTimer timer = new ElapsedTimer();
int numToGet = numPerRun * ( runs / 10 );
for ( int i = 0; i < numToGet; i++ )
{
@@ -82,7 +82,7 @@ public class BlockDiskCacheSteadyLoadTes
// System.out.println( LOG_DIVIDER );
// System.out.println( "Start putting" );
- long totalSize = 0;
+// long totalSize = 0;
int totalPut = 0;
Random random = new Random( 89 );
@@ -94,7 +94,7 @@ public class BlockDiskCacheSteadyLoadTes
// 1/2 upper to upperKB-4 KB
int kiloBytes = Math.max( upperKB / 2, random.nextInt( upperKB ) );
int bytes = ( kiloBytes ) * 1024;
- totalSize += bytes;
+// totalSize += bytes;
totalPut++;
DiskTestObject object = new DiskTestObject( Integer.valueOf( i ), new byte[bytes] );
jcs.put( String.valueOf( totalPut ), object );
Modified: commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/auxiliary/disk/jdbc/mysql/MySQLDiskCacheHsqlBackedUnitTest.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/auxiliary/disk/jdbc/mysql/MySQLDiskCacheHsqlBackedUnitTest.java?rev=1717932&r1=1717931&r2=1717932&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/auxiliary/disk/jdbc/mysql/MySQLDiskCacheHsqlBackedUnitTest.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/auxiliary/disk/jdbc/mysql/MySQLDiskCacheHsqlBackedUnitTest.java Fri Dec 4 11:13:24 2015
@@ -198,38 +198,47 @@ public class MySQLDiskCacheHsqlBackedUni
try
{
- sStatement.executeQuery( createSql.toString() );
- sStatement.close();
+ sStatement.execute( createSql.toString() );
}
catch ( SQLException e )
{
- if ( e.toString().indexOf( "already exists" ) != -1 )
+ if ("23000".equals(e.getSQLState()))
{
newT = false;
}
else
{
- // TODO figure out if it exists prior to trying to create it.
- // log.error( "Problem creating table.", e );
throw e;
}
}
-
- String setupData[] = { "create index iKEY on JCS_STORE_MYSQL (CACHE_KEY, REGION)" };
+ finally
+ {
+ sStatement.close();
+ }
if ( newT )
{
- for ( int i = 1; i < setupData.length; i++ )
+ String setupData[] = { "create index iKEY on JCS_STORE_MYSQL (CACHE_KEY, REGION)" };
+ Statement iStatement = cConn.createStatement();
+
+ try
{
- try
+ for ( int i = 0; i < setupData.length; i++ )
{
- sStatement.executeQuery( setupData[i] );
- }
- catch ( SQLException e )
- {
- System.out.println( "Exception: " + e );
+ try
+ {
+ iStatement.execute( setupData[i] );
+ }
+ catch ( SQLException e )
+ {
+ System.out.println( "Exception: " + e );
+ }
}
}
- } // end ifnew
+ finally
+ {
+ iStatement.close();
+ }
+ }
}
}
Modified: commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/engine/memory/fifo/FIFOMemoryCacheUnitTest.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/engine/memory/fifo/FIFOMemoryCacheUnitTest.java?rev=1717932&r1=1717931&r2=1717932&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/engine/memory/fifo/FIFOMemoryCacheUnitTest.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/engine/memory/fifo/FIFOMemoryCacheUnitTest.java Fri Dec 4 11:13:24 2015
@@ -19,15 +19,16 @@ package org.apache.commons.jcs.engine.me
* under the License.
*/
+import java.io.IOException;
+
import junit.framework.TestCase;
+
import org.apache.commons.jcs.engine.CacheElement;
import org.apache.commons.jcs.engine.CompositeCacheAttributes;
import org.apache.commons.jcs.engine.ElementAttributes;
import org.apache.commons.jcs.engine.behavior.ICompositeCacheAttributes;
import org.apache.commons.jcs.engine.control.CompositeCache;
-import java.io.IOException;
-
/** Unit tests for the fifo implementation. */
public class FIFOMemoryCacheUnitTest
extends TestCase
@@ -65,11 +66,11 @@ public class FIFOMemoryCacheUnitTest
// VERIFY
assertEquals( "Should have max elements", maxObjects, cache.getSize() );
- for ( int i = maxObjects; i > maxObjects; i-- )
+ for ( int i = maxObjects; i > 0; i-- )
{
- assertNotNull( "Shjould have elemnt " + i, cache.get( "key" + i ) );
+ assertNotNull( "Should have element " + i, cache.get( "key" + i ) );
}
- assertNotNull( "Shjould have oneMoreElement", cache.get( "onemore" ) );
+ assertNotNull( "Should have oneMoreElement", cache.get( "onemore" ) );
}
/**