diff --git a/pom.xml b/pom.xml index 9b1fbbe..336ddc3 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.github.mihaicostin hibernate-l2-memcached - 1.1.0 + 4.3.11.0 hibernate-l2-memcached A library for using Memcached as a second level distributed cache in Hibernate. https://github.com/mihaicostin/hibernate-l2-memcached diff --git a/src/main/java/com/mc/hibernate/memcached/MemcachedRegionFactory.java b/src/main/java/com/mc/hibernate/memcached/MemcachedRegionFactory.java index 1a805b4..d9d9c4a 100644 --- a/src/main/java/com/mc/hibernate/memcached/MemcachedRegionFactory.java +++ b/src/main/java/com/mc/hibernate/memcached/MemcachedRegionFactory.java @@ -83,8 +83,7 @@ public long nextTimestamp() { } public EntityRegion buildEntityRegion(String regionName, Properties properties, CacheDataDescription metadata) throws CacheException { - return new MemcachedEntityRegion(getCache(regionName), settings, - metadata, properties, client); + return new MemcachedEntityRegion(getCache(regionName), settings, metadata, properties, client); } public NaturalIdRegion buildNaturalIdRegion(String regionName, Properties properties, CacheDataDescription metadata) throws CacheException { @@ -96,11 +95,11 @@ public CollectionRegion buildCollectionRegion(String regionName, Properties prop } public QueryResultsRegion buildQueryResultsRegion(String regionName, Properties properties) throws CacheException { - return new MemcachedQueryResultsRegion(getCache(regionName)); + return new MemcachedQueryResultsRegion(getCache(regionName), properties); } public TimestampsRegion buildTimestampsRegion(String regionName, Properties properties) throws CacheException { - return new MemcachedTimestampsRegion(getCache(regionName)); + return new MemcachedTimestampsRegion(getCache(regionName), properties); } protected MemcacheClientFactory getMemcachedClientFactory(Config config) { diff --git a/src/main/java/com/mc/hibernate/memcached/region/AbstractMemcachedRegion.java b/src/main/java/com/mc/hibernate/memcached/region/AbstractMemcachedRegion.java index 0510064..79f3e15 100644 --- a/src/main/java/com/mc/hibernate/memcached/region/AbstractMemcachedRegion.java +++ b/src/main/java/com/mc/hibernate/memcached/region/AbstractMemcachedRegion.java @@ -21,13 +21,19 @@ import java.util.Collections; import java.util.Map; +import java.util.Properties; public abstract class AbstractMemcachedRegion implements Region { + private static final int DEFAULT_CACHE_LOCK_TIMEOUT = 60000; + private final int lockTimeout; + protected MemcachedCache cache; - AbstractMemcachedRegion(MemcachedCache cache) { + AbstractMemcachedRegion(MemcachedCache cache, Properties properties) { this.cache = cache; + String property = properties.getProperty("hibernate.memcached.cacheLockTimeout", String.valueOf(DEFAULT_CACHE_LOCK_TIMEOUT)); + this.lockTimeout = Integer.decode(property); } public String getName() { @@ -73,7 +79,7 @@ public long nextTimestamp() { * @return timeout in ms */ public int getTimeout() { - return cache.getTimeoutSeconds() * 1000; + return lockTimeout; } public MemcachedCache getCache() { diff --git a/src/main/java/com/mc/hibernate/memcached/region/MemcachedCollectionRegion.java b/src/main/java/com/mc/hibernate/memcached/region/MemcachedCollectionRegion.java index eae23da..be6217f 100644 --- a/src/main/java/com/mc/hibernate/memcached/region/MemcachedCollectionRegion.java +++ b/src/main/java/com/mc/hibernate/memcached/region/MemcachedCollectionRegion.java @@ -40,7 +40,7 @@ public class MemcachedCollectionRegion extends AbstractMemcachedRegion implement private final Settings settings; public MemcachedCollectionRegion(MemcachedCache cache, Settings settings, CacheDataDescription metadata, Properties properties, Memcache client) { - super(cache); + super(cache, properties); this.metadata = metadata; this.settings = settings; } diff --git a/src/main/java/com/mc/hibernate/memcached/region/MemcachedEntityRegion.java b/src/main/java/com/mc/hibernate/memcached/region/MemcachedEntityRegion.java index 03437b9..f029456 100644 --- a/src/main/java/com/mc/hibernate/memcached/region/MemcachedEntityRegion.java +++ b/src/main/java/com/mc/hibernate/memcached/region/MemcachedEntityRegion.java @@ -43,7 +43,7 @@ public class MemcachedEntityRegion extends AbstractMemcachedRegion implements En private final Settings settings; public MemcachedEntityRegion(MemcachedCache cache, Settings settings, CacheDataDescription metadata, Properties properties, Memcache client) { - super(cache); + super(cache, properties); this.metadata = metadata; this.settings = settings; } diff --git a/src/main/java/com/mc/hibernate/memcached/region/MemcachedNaturalIdRegion.java b/src/main/java/com/mc/hibernate/memcached/region/MemcachedNaturalIdRegion.java index 39dfcc0..fe77dc2 100644 --- a/src/main/java/com/mc/hibernate/memcached/region/MemcachedNaturalIdRegion.java +++ b/src/main/java/com/mc/hibernate/memcached/region/MemcachedNaturalIdRegion.java @@ -41,7 +41,7 @@ public class MemcachedNaturalIdRegion extends AbstractMemcachedRegion implements private final Settings settings; public MemcachedNaturalIdRegion(MemcachedCache cache, Settings settings, CacheDataDescription metadata, Properties properties, Memcache client) { - super(cache); + super(cache, properties); this.metadata = metadata; this.settings = settings; } diff --git a/src/main/java/com/mc/hibernate/memcached/region/MemcachedQueryResultsRegion.java b/src/main/java/com/mc/hibernate/memcached/region/MemcachedQueryResultsRegion.java index 8d03ab8..cd966de 100644 --- a/src/main/java/com/mc/hibernate/memcached/region/MemcachedQueryResultsRegion.java +++ b/src/main/java/com/mc/hibernate/memcached/region/MemcachedQueryResultsRegion.java @@ -22,12 +22,14 @@ import com.mc.hibernate.memcached.MemcachedCache; +import java.util.Properties; + public class MemcachedQueryResultsRegion extends AbstractMemcachedRegion implements QueryResultsRegion { private final Logger log = LoggerFactory.getLogger(MemcachedQueryResultsRegion.class); - public MemcachedQueryResultsRegion(MemcachedCache cache) { - super(cache); + public MemcachedQueryResultsRegion(MemcachedCache cache, Properties properties) { + super(cache, properties); } public Object get(Object key) throws CacheException { diff --git a/src/main/java/com/mc/hibernate/memcached/region/MemcachedTimestampsRegion.java b/src/main/java/com/mc/hibernate/memcached/region/MemcachedTimestampsRegion.java index db789cc..ca14e98 100644 --- a/src/main/java/com/mc/hibernate/memcached/region/MemcachedTimestampsRegion.java +++ b/src/main/java/com/mc/hibernate/memcached/region/MemcachedTimestampsRegion.java @@ -22,12 +22,14 @@ import com.mc.hibernate.memcached.MemcachedCache; +import java.util.Properties; + public class MemcachedTimestampsRegion extends AbstractMemcachedRegion implements TimestampsRegion { private final Logger log = LoggerFactory.getLogger(MemcachedTimestampsRegion.class); - public MemcachedTimestampsRegion(MemcachedCache cache) { - super(cache); + public MemcachedTimestampsRegion(MemcachedCache cache, Properties properties) { + super(cache, properties); } public Object get(Object key) throws CacheException {