Author: galder.zamarreno(a)jboss.com
Date: 2010-07-05 13:36:04 -0400 (Mon, 05 Jul 2010)
New Revision: 19901
Modified:
core/trunk/cache-infinispan/src/main/java/org/hibernate/cache/infinispan/InfinispanRegionFactory.java
core/trunk/cache-infinispan/src/test/java/org/hibernate/test/cache/infinispan/InfinispanRegionFactoryTestCase.java
core/trunk/cache-infinispan/src/test/java/org/hibernate/test/cache/infinispan/functional/classloader/IsolatedClassLoaderTest.java
Log:
[HHH-5260] (Allow query region name specific eviction settings) Ported to trunk.
Modified:
core/trunk/cache-infinispan/src/main/java/org/hibernate/cache/infinispan/InfinispanRegionFactory.java
===================================================================
---
core/trunk/cache-infinispan/src/main/java/org/hibernate/cache/infinispan/InfinispanRegionFactory.java 2010-07-05
17:25:32 UTC (rev 19900)
+++
core/trunk/cache-infinispan/src/main/java/org/hibernate/cache/infinispan/InfinispanRegionFactory.java 2010-07-05
17:36:04 UTC (rev 19901)
@@ -99,7 +99,7 @@
/**
* Name of the configuration that should be used for timestamp caches.
*
- * @see #DEF_TS_RESOURCE
+ * @see #DEF_TIMESTAMPS_RESOURCE
*/
public static final String TIMESTAMPS_CACHE_RESOURCE_PROP = PREFIX + TIMESTAMPS_KEY +
CONFIG_SUFFIX;
@@ -113,7 +113,7 @@
public static final String QUERY_CACHE_RESOURCE_PROP = PREFIX + QUERY_KEY +
CONFIG_SUFFIX;
/**
- * Default value for {@link #INFINISPAN_RESOURCE_PROP}. Specifies the
"infinispan-configs.xml" file in this package.
+ * Default value for {@link #INFINISPAN_CONFIG_RESOURCE_PROP}. Specifies the
"infinispan-configs.xml" file in this package.
*/
public static final String DEF_INFINISPAN_CONFIG_RESOURCE =
"org/hibernate/cache/infinispan/builder/infinispan-configs.xml";
@@ -184,7 +184,12 @@
throws CacheException {
if (log.isDebugEnabled()) log.debug("Building query results cache region
[" + regionName + "]");
String cacheName = typeOverrides.get(QUERY_KEY).getCacheName();
- CacheAdapter cacheAdapter =
CacheAdapterImpl.newInstance(manager.getCache(cacheName));
+ // If region name is not default one, lookup a cache for that region name
+ if (!regionName.equals("org.hibernate.cache.StandardQueryCache"))
+ cacheName = regionName;
+
+ Cache cache = getCache(cacheName, QUERY_KEY, properties);
+ CacheAdapter cacheAdapter = CacheAdapterImpl.newInstance(cache);
QueryResultsRegionImpl region = new QueryResultsRegionImpl(cacheAdapter,
regionName, properties, transactionManager, this);
region.start();
return region;
@@ -369,7 +374,7 @@
String templateCacheName = null;
Configuration regionCacheCfg = null;
if (regionOverride != null) {
- if (log.isDebugEnabled()) log.debug("Entity cache region specific
configuration exists: " + regionOverride);
+ if (log.isDebugEnabled()) log.debug("Cache region specific configuration
exists: " + regionOverride);
regionOverride = overrideStatisticsIfPresent(regionOverride, properties);
regionCacheCfg = regionOverride.createInfinispanConfiguration();
String cacheName = regionOverride.getCacheName();
@@ -412,4 +417,4 @@
}
return override;
}
-}
\ No newline at end of file
+}
Modified:
core/trunk/cache-infinispan/src/test/java/org/hibernate/test/cache/infinispan/InfinispanRegionFactoryTestCase.java
===================================================================
---
core/trunk/cache-infinispan/src/test/java/org/hibernate/test/cache/infinispan/InfinispanRegionFactoryTestCase.java 2010-07-05
17:25:32 UTC (rev 19900)
+++
core/trunk/cache-infinispan/src/test/java/org/hibernate/test/cache/infinispan/InfinispanRegionFactoryTestCase.java 2010-07-05
17:36:04 UTC (rev 19901)
@@ -415,6 +415,32 @@
}
}
+ public void testBuildQueryRegionWithCustomRegionName() {
+ final String queryRegionName = "myquery";
+ Properties p = new Properties();
+ InfinispanRegionFactory factory = new InfinispanRegionFactory();
+ p.setProperty("hibernate.cache.infinispan.myquery.cfg",
"timestamps-none-eviction");
+ p.setProperty("hibernate.cache.infinispan.myquery.eviction.strategy",
"FIFO");
+
p.setProperty("hibernate.cache.infinispan.myquery.eviction.wake_up_interval",
"2222");
+ p.setProperty("hibernate.cache.infinispan.myquery.eviction.max_entries",
"11111");
+ factory.start(null, p);
+ CacheManager manager = factory.getCacheManager();
+ manager.getGlobalConfiguration().setTransportClass(null);
+ try {
+
assertTrue(factory.getDefinedConfigurations().contains("local-query"));
+ QueryResultsRegionImpl region = (QueryResultsRegionImpl)
factory.buildQueryResultsRegion(queryRegionName, p);
+ assertNotNull(factory.getTypeOverrides().get(queryRegionName));
+ assertTrue(factory.getDefinedConfigurations().contains(queryRegionName));
+ CacheAdapter cache = region.getCacheAdapter();
+ Configuration cacheCfg = cache.getConfiguration();
+ assertEquals(EvictionStrategy.FIFO, cacheCfg.getEvictionStrategy());
+ assertEquals(2222, cacheCfg.getEvictionWakeUpInterval());
+ assertEquals(11111, cacheCfg.getEvictionMaxEntries());
+ } finally {
+ factory.stop();
+ }
+ }
+
public void testEnableStatistics() {
Properties p = new Properties();
p.setProperty("hibernate.cache.infinispan.statistics",
"true");
Modified:
core/trunk/cache-infinispan/src/test/java/org/hibernate/test/cache/infinispan/functional/classloader/IsolatedClassLoaderTest.java
===================================================================
---
core/trunk/cache-infinispan/src/test/java/org/hibernate/test/cache/infinispan/functional/classloader/IsolatedClassLoaderTest.java 2010-07-05
17:25:32 UTC (rev 19900)
+++
core/trunk/cache-infinispan/src/test/java/org/hibernate/test/cache/infinispan/functional/classloader/IsolatedClassLoaderTest.java 2010-07-05
17:36:04 UTC (rev 19901)
@@ -88,6 +88,7 @@
protected void standardConfigure(Configuration cfg) {
super.standardConfigure(cfg);
cfg.setProperty(InfinispanRegionFactory.QUERY_CACHE_RESOURCE_PROP,
"replicated-query");
+ cfg.setProperty("hibernate.cache.infinispan.AccountRegion.cfg",
"replicated-query");
}
@@ -164,15 +165,25 @@
// Bind a listener to the "local" cache
// Our region factory makes its CacheManager available to us
CacheManager localManager =
ClusterAwareRegionFactory.getCacheManager(DualNodeTestCase.LOCAL);
- localQueryCache = localManager.getCache("replicated-query");
+ // Bind a listener to the "remote" cache
+ CacheManager remoteManager =
ClusterAwareRegionFactory.getCacheManager(DualNodeTestCase.REMOTE);
+ String cacheName;
+ if (useNamedRegion) {
+ cacheName = "AccountRegion"; // As defined by ClassLoaderTestDAO via
calls to query.setCacheRegion
+ // Define cache configurations for region early to avoid ending up with local
caches for this region
+ localManager.defineConfiguration(cacheName, "replicated-query", new
org.infinispan.config.Configuration());
+ remoteManager.defineConfiguration(cacheName, "replicated-query", new
org.infinispan.config.Configuration());
+ } else {
+ cacheName = "replicated-query";
+ }
+
+ localQueryCache = localManager.getCache(cacheName);
localQueryListener = new CacheAccessListener();
localQueryCache.addListener(localQueryListener);
TransactionManager localTM =
DualNodeJtaTransactionManagerImpl.getInstance(DualNodeTestCase.LOCAL);
- // Bind a listener to the "remote" cache
- CacheManager remoteManager =
ClusterAwareRegionFactory.getCacheManager(DualNodeTestCase.REMOTE);
- remoteQueryCache = remoteManager.getCache("replicated-query");
+ remoteQueryCache = remoteManager.getCache(cacheName);
remoteQueryListener = new CacheAccessListener();
remoteQueryCache.addListener(remoteQueryListener);
Show replies by date