You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directmemory.apache.org by si...@apache.org on 2012/02/16 15:15:39 UTC
svn commit: r1244986 - in /incubator/directmemory/trunk: ./
directmemory-cache/
directmemory-cache/src/main/java/org/apache/directmemory/memory/
directmemory-cache/src/test/java/org/apache/directmemory/cache/
Author: simonetripodi
Date: Thu Feb 16 14:15:38 2012
New Revision: 1244986
URL: http://svn.apache.org/viewvc?rev=1244986&view=rev
Log:
JOSQL replaced by Guava Predicates, dropped JOSQL dependency
Modified:
incubator/directmemory/trunk/directmemory-cache/pom.xml
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/AbstractOffHeapMemoryBuffer.java
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/OffHeapMemoryBufferImpl.java
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/cache/CacheLightConcurrentTest.java
incubator/directmemory/trunk/pom.xml
Modified: incubator/directmemory/trunk/directmemory-cache/pom.xml
URL: http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/pom.xml?rev=1244986&r1=1244985&r2=1244986&view=diff
==============================================================================
--- incubator/directmemory/trunk/directmemory-cache/pom.xml (original)
+++ incubator/directmemory/trunk/directmemory-cache/pom.xml Thu Feb 16 14:15:38 2012
@@ -42,7 +42,6 @@ under the License.
!org.apache.directmemory*,
com.google.common.collect;version="[9.0,11)",
org.aspectj*;version="[1.6,2)",
- org.josql*;version="[1.5,2)",
org.slf4j*,
*
</osgi.import>
@@ -108,10 +107,6 @@ under the License.
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
</dependency>
- <dependency>
- <groupId>org.apache.servicemix.bundles</groupId>
- <artifactId>org.apache.servicemix.bundles.josql</artifactId>
- </dependency>
<dependency>
<groupId>com.h2database</groupId>
Modified: incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/AbstractOffHeapMemoryBuffer.java
URL: http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/AbstractOffHeapMemoryBuffer.java?rev=1244986&r1=1244985&r2=1244986&view=diff
==============================================================================
--- incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/AbstractOffHeapMemoryBuffer.java (original)
+++ incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/AbstractOffHeapMemoryBuffer.java Thu Feb 16 14:15:38 2012
@@ -19,19 +19,21 @@ package org.apache.directmemory.memory;
* under the License.
*/
+import static com.google.common.collect.Iterables.filter;
+import static com.google.common.collect.Iterables.limit;
+import static com.google.common.collect.Ordering.from;
+
import java.nio.BufferOverflowException;
import java.nio.ByteBuffer;
-import java.util.ArrayList;
+import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
-import org.josql.Query;
-import org.josql.QueryExecutionException;
-import org.josql.QueryParseException;
-import org.josql.QueryResults;
import org.slf4j.Logger;
+import com.google.common.base.Predicate;
+
public abstract class AbstractOffHeapMemoryBuffer
implements OffHeapMemoryBuffer
{
@@ -48,6 +50,32 @@ public abstract class AbstractOffHeapMem
protected abstract Logger getLogger();
+ private final Predicate<Pointer> relative = new Predicate<Pointer>()
+ {
+
+ @Override
+ public boolean apply( Pointer input )
+ {
+ return !input.free
+ && input.expiresIn > 0
+ && ( input.expiresIn + input.created ) <= System.currentTimeMillis();
+ }
+
+ };
+
+ private final Predicate<Pointer> absolute = new Predicate<Pointer>()
+ {
+
+ @Override
+ public boolean apply( Pointer input )
+ {
+ return !input.free
+ && input.expires > 0
+ && input.expires <= System.currentTimeMillis();
+ }
+
+ };
+
public int used()
{
return used.get();
@@ -101,50 +129,18 @@ public abstract class AbstractOffHeapMem
protected abstract Pointer store( byte[] payload, long expiresIn, long expires );
- protected QueryResults select( String whereClause, List<Pointer> pointers )
- throws QueryParseException, QueryExecutionException
- {
- Query q = new Query();
- q.parse( "SELECT * FROM " + Pointer.class.getCanonicalName() + " WHERE " + whereClause );
- QueryResults qr = q.execute( pointers );
- return qr;
- }
-
- protected QueryResults selectOrderBy( String whereClause, String orderBy, String limit, List<Pointer> pointers )
- throws QueryParseException, QueryExecutionException
- {
- Query q = new Query();
- q.parse( "SELECT * FROM " + Pointer.class.getCanonicalName() + " WHERE " + whereClause + " order by "
- + orderBy + " " + limit );
- QueryResults qr = q.execute( pointers );
- return qr;
- }
-
protected boolean inShortage()
{
// a place holder for a more refined version
return allocationErrors > AbstractOffHeapMemoryBuffer.maxAllocationErrors;
}
- @SuppressWarnings("unchecked")
- protected List<Pointer> filter( final String whereClause, List<Pointer> pointers )
+ protected long free( Predicate<Pointer> predicate )
{
- try
- {
- return select( whereClause, pointers ).getResults();
- }
- catch ( QueryParseException e )
- {
- e.printStackTrace();
- }
- catch ( QueryExecutionException e )
- {
- e.printStackTrace();
- }
- return (List<Pointer>) new ArrayList<Pointer>();
+ return free( filter( getUsedPointers(), predicate ) );
}
- protected long free( List<Pointer> pointers )
+ protected long free( Iterable<Pointer> pointers )
{
long howMuch = 0;
for ( Pointer expired : pointers )
@@ -158,23 +154,19 @@ public abstract class AbstractOffHeapMem
public void disposeExpiredRelative()
{
- free( filter( "free=false and expiresIn > 0 and (expiresIn+created) <= " + System.currentTimeMillis(),
- getUsedPointers() ) );
+ free( relative );
}
public void disposeExpiredAbsolute()
{
- free( filter( "free=false and expires > 0 and (expires) <= " + System.currentTimeMillis(), getUsedPointers() ) );
+ free( absolute );
}
public long collectExpired()
{
int limit = 50;
- long disposed = free( filter( "free=false and expiresIn > 0 and (expiresIn+created) <= "
- + System.currentTimeMillis() + " limit 1, " + limit, getUsedPointers() ) );
- disposed += free( filter( "free=false and expires > 0 and (expires) <= " + System.currentTimeMillis()
- + " limit 1, 100" + limit, getUsedPointers() ) );
- return disposed;
+ return free( limit( filter( getUsedPointers(), relative ), limit ) )
+ + free( limit( filter( getUsedPointers(), absolute ), limit ) );
}
public long collectLFU( int limit )
@@ -184,31 +176,38 @@ public abstract class AbstractOffHeapMem
return 0;
}
if ( limit <= 0 )
+ {
limit = getUsedPointers().size() / 10;
- QueryResults qr;
- try
+ }
+
+ Iterable<Pointer> result = from( new Comparator<Pointer>()
{
- qr = selectOrderBy( "free=false", "frequency", "limit 1, " + limit, getUsedPointers() );
- @SuppressWarnings("unchecked")
- List<Pointer> result = qr.getResults();
- if ( result.size() > 0 )
+
+ public int compare( Pointer o1, Pointer o2 )
{
- // reset allocation errors if we made some room
- allocationErrors = 0;
+ float f1 = o1.getFrequency();
+ float f2 = o2.getFrequency();
+
+ return Float.compare( f1, f2 );
}
- return free( result );
- }
- catch ( QueryParseException e )
+
+ } ).sortedCopy( limit( filter( getUsedPointers(), new Predicate<Pointer>()
{
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- catch ( QueryExecutionException e )
+
+ @Override
+ public boolean apply( Pointer input )
+ {
+ return !input.free;
+ }
+
+ } ), limit ) );
+
+ if ( result.iterator().hasNext() )
{
- // TODO Auto-generated catch block
- e.printStackTrace();
+ // reset allocation errors if we made some room
+ allocationErrors = 0;
}
- return 0;
+ return free( result );
}
public Pointer update( Pointer pointer, byte[] payload )
@@ -223,7 +222,7 @@ public abstract class AbstractOffHeapMem
public abstract Pointer allocate( int size, long expiresIn, long expires );
- protected void resetPointer( final Pointer pointer )
+ protected void resetPointer( final Pointer pointer )
{
pointer.free = true;
pointer.created = 0;
@@ -233,7 +232,7 @@ public abstract class AbstractOffHeapMem
pointer.clazz = null;
pointer.directBuffer = null;
}
-
+
protected void setExpiration( final Pointer pointer, long expiresIn, long expires )
{
@@ -248,5 +247,5 @@ public abstract class AbstractOffHeapMem
pointer.expires = expires;
}
}
-
+
}
Modified: incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/OffHeapMemoryBufferImpl.java
URL: http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/OffHeapMemoryBufferImpl.java?rev=1244986&r1=1244985&r2=1244986&view=diff
==============================================================================
--- incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/OffHeapMemoryBufferImpl.java (original)
+++ incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/OffHeapMemoryBufferImpl.java Thu Feb 16 14:15:38 2012
@@ -30,10 +30,6 @@ import java.util.zip.CRC32;
import java.util.zip.Checksum;
import org.apache.directmemory.measures.Ram;
-import org.josql.Query;
-import org.josql.QueryExecutionException;
-import org.josql.QueryParseException;
-import org.josql.QueryResults;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -206,59 +202,12 @@ public class OffHeapMemoryBufferImpl
return fresh;
}
- protected QueryResults select( String whereClause )
- throws QueryParseException, QueryExecutionException
- {
- Query q = new Query();
- q.parse( "SELECT * FROM " + Pointer.class.getCanonicalName() + " WHERE " + whereClause );
- QueryResults qr = q.execute( pointers );
- return qr;
- }
-
- protected QueryResults selectOrderBy( String whereClause, String orderBy, String limit )
- throws QueryParseException, QueryExecutionException
- {
- Query q = new Query();
- q.parse( "SELECT * FROM " + Pointer.class.getCanonicalName() + " WHERE " + whereClause + " order by "
- + orderBy + " " + limit );
- QueryResults qr = q.execute( pointers );
- return qr;
- }
-
protected boolean inShortage()
{
// a place holder for a more refined version
return allocationErrors > OffHeapMemoryBufferImpl.maxAllocationErrors;
}
- @SuppressWarnings("unchecked")
- protected List<Pointer> filter( final String whereClause )
- {
- try
- {
- return select( whereClause ).getResults();
- }
- catch ( QueryParseException e )
- {
- e.printStackTrace();
- }
- catch ( QueryExecutionException e )
- {
- e.printStackTrace();
- }
- return (List<Pointer>) new ArrayList<Pointer>();
- }
-
- protected long free( List<Pointer> pointers )
- {
- long howMuch = 0;
- for ( Pointer expired : pointers )
- {
- howMuch += free( expired );
- }
- return howMuch;
- }
-
// TODO : This function should be put in an Util class.
public static long crc32( byte[] payload )
{
Modified: incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/cache/CacheLightConcurrentTest.java
URL: http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/cache/CacheLightConcurrentTest.java?rev=1244986&r1=1244985&r2=1244986&view=diff
==============================================================================
--- incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/cache/CacheLightConcurrentTest.java (original)
+++ incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/cache/CacheLightConcurrentTest.java Thu Feb 16 14:15:38 2012
@@ -19,20 +19,14 @@ package org.apache.directmemory.cache;
* under the License.
*/
-import com.carrotsearch.junitbenchmarks.AbstractBenchmark;
-import com.carrotsearch.junitbenchmarks.BenchmarkOptions;
-import com.carrotsearch.junitbenchmarks.annotation.AxisRange;
-import com.carrotsearch.junitbenchmarks.annotation.BenchmarkHistoryChart;
-import com.carrotsearch.junitbenchmarks.annotation.BenchmarkMethodChart;
-import com.carrotsearch.junitbenchmarks.annotation.LabelType;
-import org.apache.directmemory.cache.Cache;
+import java.util.Random;
+import java.util.concurrent.atomic.AtomicInteger;
+
import org.apache.directmemory.measures.Every;
import org.apache.directmemory.measures.Monitor;
import org.apache.directmemory.measures.Ram;
import org.apache.directmemory.memory.MemoryManager;
import org.apache.directmemory.memory.Pointer;
-import org.josql.QueryExecutionException;
-import org.josql.QueryParseException;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Ignore;
@@ -40,8 +34,12 @@ import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.Random;
-import java.util.concurrent.atomic.AtomicInteger;
+import com.carrotsearch.junitbenchmarks.AbstractBenchmark;
+import com.carrotsearch.junitbenchmarks.BenchmarkOptions;
+import com.carrotsearch.junitbenchmarks.annotation.AxisRange;
+import com.carrotsearch.junitbenchmarks.annotation.BenchmarkHistoryChart;
+import com.carrotsearch.junitbenchmarks.annotation.BenchmarkMethodChart;
+import com.carrotsearch.junitbenchmarks.annotation.LabelType;
@AxisRange( min = 0, max = 1 )
@BenchmarkMethodChart()
@@ -103,7 +101,7 @@ public class CacheLightConcurrentTest
@BenchmarkOptions( benchmarkRounds = 1, warmupRounds = 0, concurrency = 1 )
@Test
public void LFUEviction()
- throws QueryParseException, QueryExecutionException
+ throws Exception
{
Cache.collectAll();
}
@@ -265,6 +263,6 @@ public class CacheLightConcurrentTest
}
}
-
-
+
+
Modified: incubator/directmemory/trunk/pom.xml
URL: http://svn.apache.org/viewvc/incubator/directmemory/trunk/pom.xml?rev=1244986&r1=1244985&r2=1244986&view=diff
==============================================================================
--- incubator/directmemory/trunk/pom.xml (original)
+++ incubator/directmemory/trunk/pom.xml Thu Feb 16 14:15:38 2012
@@ -239,8 +239,6 @@ under the License.
<guava.version>r09</guava.version>
<h2.version>1.3.158</h2.version>
<karaf.version>2.2.4</karaf.version>
- <josql.bundle.version>1.5_5</josql.bundle.version>
- <josql.version>1.5</josql.version>
<junit.version>4.10</junit.version>
<junit-benchamrks.version>0.3.0</junit-benchamrks.version>
<logback.version>1.0.0</logback.version>
@@ -507,22 +505,6 @@ under the License.
</dependency>
<dependency>
- <groupId>net.sf.josql</groupId>
- <artifactId>josql</artifactId>
- <version>${josql.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.servicemix.bundles</groupId>
- <artifactId>org.apache.servicemix.bundles.josql</artifactId>
- <version>${josql.bundle.version}</version>
- </dependency>
- <dependency>
- <groupId>net.sf.josql</groupId>
- <artifactId>gentlyweb-utils</artifactId>
- <version>${josql.version}</version>
- </dependency>
-
- <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>