[infinispan-commits] Infinispan SVN: r2209 - in trunk/core/src: main/java/org/infinispan/config and 1 other directories.
infinispan-commits at lists.jboss.org
infinispan-commits at lists.jboss.org
Thu Aug 12 11:29:46 EDT 2010
Author: mircea.markus
Date: 2010-08-12 11:29:46 -0400 (Thu, 12 Aug 2010)
New Revision: 2209
Added:
trunk/core/src/test/java/org/infinispan/lock/EagerLockingDisabledTest.java
Modified:
trunk/core/src/main/java/org/infinispan/CacheDelegate.java
trunk/core/src/main/java/org/infinispan/config/ConfigurationValidatingVisitor.java
Log:
migrated 2208 from 4.1.x
Modified: trunk/core/src/main/java/org/infinispan/CacheDelegate.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/CacheDelegate.java 2010-08-12 14:52:47 UTC (rev 2208)
+++ trunk/core/src/main/java/org/infinispan/CacheDelegate.java 2010-08-12 15:29:46 UTC (rev 2209)
@@ -37,6 +37,7 @@
import org.infinispan.commands.write.ReplaceCommand;
import org.infinispan.config.Configuration;
import org.infinispan.config.ConfigurationException;
+import org.infinispan.config.ConfigurationValidatingVisitor;
import org.infinispan.container.DataContainer;
import org.infinispan.container.entries.InternalCacheEntry;
import org.infinispan.context.Flag;
@@ -286,6 +287,8 @@
public void lock(K key) {
assertKeyNotNull(key);
+ //this will be removed with https://jira.jboss.org/browse/ISPN-598
+ ConfigurationValidatingVisitor.checkEagerLockingAndDld(config, true);
lock(Collections.singletonList(key));
}
Modified: trunk/core/src/main/java/org/infinispan/config/ConfigurationValidatingVisitor.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/config/ConfigurationValidatingVisitor.java 2010-08-12 14:52:47 UTC (rev 2208)
+++ trunk/core/src/main/java/org/infinispan/config/ConfigurationValidatingVisitor.java 2010-08-12 15:29:46 UTC (rev 2209)
@@ -22,6 +22,7 @@
package org.infinispan.config;
import org.infinispan.config.GlobalConfiguration.TransportType;
+import org.infinispan.eviction.EvictionStrategy;
import org.infinispan.loaders.decorators.SingletonStoreConfig;
/**
@@ -33,14 +34,52 @@
*/
public class ConfigurationValidatingVisitor extends AbstractConfigurationBeanVisitor {
private TransportType tt = null;
+ private CacheLoaderManagerConfig clmc = null;
+ private Configuration.EvictionType eviction = null;
@Override
public void visitSingletonStoreConfig(SingletonStoreConfig ssc) {
- if (tt == null) throw new ConfigurationException("Singleton store configured without transport being configured");
+ if (tt == null && ssc.isSingletonStoreEnabled()) throw new ConfigurationException("Singleton store configured without transport being configured");
}
@Override
public void visitTransportType(TransportType tt) {
this.tt = tt;
}
+
+ @Override
+ public void visitEvictionType(Configuration.EvictionType bean) {
+ this.eviction = bean;
+ if (this.eviction != null && this.clmc != null) checkEvictionPassivationSettings();
+ super.visitEvictionType(bean);
+ }
+
+ @Override
+ public void visitCacheLoaderManagerConfig(CacheLoaderManagerConfig bean) {
+ this.clmc = bean;
+ if (this.eviction != null && this.clmc != null) checkEvictionPassivationSettings();
+ super.visitCacheLoaderManagerConfig(bean);
+ }
+
+ @Override
+ public void visitConfiguration(Configuration bean) {
+ checkEagerLockingAndDld(bean);
+ }
+
+ private void checkEagerLockingAndDld(Configuration bean) {
+ boolean isEagerLocking = bean.isUseEagerLocking();
+ checkEagerLockingAndDld(bean, isEagerLocking);
+ }
+
+ public static void checkEagerLockingAndDld(Configuration bean, boolean eagerLocking) {
+ boolean isDealLockDetection = bean.isEnableDeadlockDetection();
+ if (isDealLockDetection && eagerLocking) {
+ throw new ConfigurationException("Deadlock detection cannot be used with eager locking until ISPN-596 is fixed. See https://jira.jboss.org/browse/ISPN-596");
+ }
+ }
+
+ private void checkEvictionPassivationSettings() {
+ if (eviction != null && clmc != null && clmc.isPassivation() && eviction.strategy == EvictionStrategy.LIRS)
+ throw new ConfigurationException("Eviction strategy LIRS cannot be used with passivation until ISPN-598 is fixed. See https://jira.jboss.org/browse/ISPN-598");
+ }
}
Copied: trunk/core/src/test/java/org/infinispan/lock/EagerLockingDisabledTest.java (from rev 2208, branches/4.1.x/core/src/test/java/org/infinispan/lock/EagerLockingDisabledTest.java)
===================================================================
--- trunk/core/src/test/java/org/infinispan/lock/EagerLockingDisabledTest.java (rev 0)
+++ trunk/core/src/test/java/org/infinispan/lock/EagerLockingDisabledTest.java 2010-08-12 15:29:46 UTC (rev 2209)
@@ -0,0 +1,51 @@
+package org.infinispan.lock;
+
+import org.infinispan.Cache;
+import org.infinispan.CacheException;
+import org.infinispan.config.Configuration;
+import org.infinispan.config.ConfigurationException;
+import org.infinispan.manager.EmbeddedCacheManager;
+import org.infinispan.test.TestingUtil;
+import org.infinispan.test.fwk.TestCacheManagerFactory;
+import org.testng.annotations.Test;
+
+/**
+ * Tester for https://jira.jboss.org/browse/ISPN-596
+ *
+ * @author Mircea.Markus at jboss.com
+ * @since 4.1
+ */
+ at Test (groups = "functional", testName = "lock.EagerLockingDisabledTest")
+public class EagerLockingDisabledTest {
+
+ public void testImplicitEagerLockingAndDld() {
+ Configuration configuration = TestCacheManagerFactory.getDefaultConfiguration(false);
+ configuration.setEnableDeadlockDetection(true);
+ configuration.setUseEagerLocking(true);
+ EmbeddedCacheManager cm = null;
+ try {
+ cm = TestCacheManagerFactory.createCacheManager(configuration);
+ assert false : "expecting configuration exception";
+ } catch (ConfigurationException ce) {
+ //expected
+ }
+ finally {
+ TestingUtil.killCacheManagers(cm);
+ }
+ }
+
+ public void testExplicitEagerLockingAndDld() {
+ Configuration configuration = TestCacheManagerFactory.getDefaultConfiguration(false);
+ configuration.setEnableDeadlockDetection(true);
+ EmbeddedCacheManager cm = TestCacheManagerFactory.createCacheManager(configuration);
+ Cache c = cm.getCache();
+ try {
+ c.getAdvancedCache().lock("k");
+ } catch (ConfigurationException ce) {
+ //expected
+ }
+ finally {
+ TestingUtil.killCacheManagers(cm);
+ }
+ }
+}
More information about the infinispan-commits
mailing list