[infinispan-commits] Infinispan SVN: r2208 - in branches/4.1.x/core/src: main/java/org/infinispan/config and 2 other directories.
infinispan-commits at lists.jboss.org
infinispan-commits at lists.jboss.org
Thu Aug 12 10:52:48 EDT 2010
Author: mircea.markus
Date: 2010-08-12 10:52:47 -0400 (Thu, 12 Aug 2010)
New Revision: 2208
Added:
branches/4.1.x/core/src/test/java/org/infinispan/lock/EagerLockingDisabledTest.java
Modified:
branches/4.1.x/core/src/main/java/org/infinispan/CacheDelegate.java
branches/4.1.x/core/src/main/java/org/infinispan/config/ConfigurationValidatingVisitor.java
branches/4.1.x/core/src/main/java/org/infinispan/factories/InterceptorChainFactory.java
Log:
[ISPN-596] - Deadlock detection and explicit locking should be disallowed.
Modified: branches/4.1.x/core/src/main/java/org/infinispan/CacheDelegate.java
===================================================================
--- branches/4.1.x/core/src/main/java/org/infinispan/CacheDelegate.java 2010-08-12 14:42:54 UTC (rev 2207)
+++ branches/4.1.x/core/src/main/java/org/infinispan/CacheDelegate.java 2010-08-12 14:52:47 UTC (rev 2208)
@@ -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: branches/4.1.x/core/src/main/java/org/infinispan/config/ConfigurationValidatingVisitor.java
===================================================================
--- branches/4.1.x/core/src/main/java/org/infinispan/config/ConfigurationValidatingVisitor.java 2010-08-12 14:42:54 UTC (rev 2207)
+++ branches/4.1.x/core/src/main/java/org/infinispan/config/ConfigurationValidatingVisitor.java 2010-08-12 14:52:47 UTC (rev 2208)
@@ -61,6 +61,23 @@
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");
Modified: branches/4.1.x/core/src/main/java/org/infinispan/factories/InterceptorChainFactory.java
===================================================================
--- branches/4.1.x/core/src/main/java/org/infinispan/factories/InterceptorChainFactory.java 2010-08-12 14:42:54 UTC (rev 2207)
+++ branches/4.1.x/core/src/main/java/org/infinispan/factories/InterceptorChainFactory.java 2010-08-12 14:52:47 UTC (rev 2208)
@@ -85,10 +85,6 @@
else
interceptorChain.appendIntereceptor(createInterceptor(TxInterceptor.class));
- if (configuration.isUseEagerLocking() && configuration.isEnableDeadlockDetection()) {
- throw new ConfigurationException("This is not supported yet: https://jira.jboss.org/browse/ISPN-518");
- }
-
if(configuration.isUseEagerLocking())
interceptorChain.appendIntereceptor(createInterceptor(ImplicitEagerLockingInterceptor.class));
Added: branches/4.1.x/core/src/test/java/org/infinispan/lock/EagerLockingDisabledTest.java
===================================================================
--- branches/4.1.x/core/src/test/java/org/infinispan/lock/EagerLockingDisabledTest.java (rev 0)
+++ branches/4.1.x/core/src/test/java/org/infinispan/lock/EagerLockingDisabledTest.java 2010-08-12 14:52:47 UTC (rev 2208)
@@ -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