[jbosscache-commits] JBoss Cache SVN: r4598 - in core/trunk/src/main/java/org/jboss/cache: interceptors and 1 other directory.
jbosscache-commits at lists.jboss.org
jbosscache-commits at lists.jboss.org
Thu Oct 11 08:25:57 EDT 2007
Author: manik.surtani at jboss.com
Date: 2007-10-11 08:25:57 -0400 (Thu, 11 Oct 2007)
New Revision: 4598
Modified:
core/trunk/src/main/java/org/jboss/cache/CacheImpl.java
core/trunk/src/main/java/org/jboss/cache/interceptors/TxInterceptor.java
Log:
Proper resetting of options passed in when overridden
Modified: core/trunk/src/main/java/org/jboss/cache/CacheImpl.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/CacheImpl.java 2007-10-10 18:01:21 UTC (rev 4597)
+++ core/trunk/src/main/java/org/jboss/cache/CacheImpl.java 2007-10-11 12:25:57 UTC (rev 4598)
@@ -2747,9 +2747,11 @@
if (!configuration.isNodeLockingOptimistic()) return;
// create the node we need.
Map<K, V> m = Collections.emptyMap();
- getInvocationContext().getOptionOverrides().setCacheModeLocal(true);
+ InvocationContext ic = getInvocationContext();
+ boolean origCacheModeLocal = ic.getOptionOverrides().isCacheModeLocal();
+ ic.getOptionOverrides().setCacheModeLocal(true);
put(fqn, m);
- getInvocationContext().getOptionOverrides().setCacheModeLocal(false);
+ ic.getOptionOverrides().setCacheModeLocal(origCacheModeLocal);
NodeSPI nodeSPI = (NodeSPI) root.getChild(fqn);
nodeSPI.setVersion(versionToInvalidate);
}
Modified: core/trunk/src/main/java/org/jboss/cache/interceptors/TxInterceptor.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/interceptors/TxInterceptor.java 2007-10-10 18:01:21 UTC (rev 4597)
+++ core/trunk/src/main/java/org/jboss/cache/interceptors/TxInterceptor.java 2007-10-11 12:25:57 UTC (rev 4598)
@@ -1129,6 +1129,7 @@
// This is STILL remotely originating though and this needs to be made explicit here.
// this can be checked by inspecting the InvocationContext.isOriginLocal() at the time of registering the sync.
private boolean remoteLocal = false;
+ private Option originalOptions, transactionalOptions;
/**
* A Synchronization for locally originating txs.
@@ -1164,7 +1165,9 @@
}
// set any transaction wide options as current for this thread.
- ctx.setOptionOverrides(entry.getOption());
+ originalOptions = ctx.getOptionOverrides();
+ transactionalOptions = entry.getOption();
+ ctx.setOptionOverrides(transactionalOptions);
try
{
@@ -1207,6 +1210,7 @@
{
localRollbackOnly = false;
setTransactionalContext(null, null, ctx);
+ ctx.setOptionOverrides(originalOptions);
}
}
@@ -1216,7 +1220,15 @@
// could happen if a rollback is called and beforeCompletion() doesn't get called.
if (ctx == null) ctx = cache.getInvocationContext();
ctx.setLocalRollbackOnly(localRollbackOnly);
- super.afterCompletion(status);
+ ctx.setOptionOverrides(transactionalOptions);
+ try
+ {
+ super.afterCompletion(status);
+ }
+ finally
+ {
+ ctx.setOptionOverrides(originalOptions);
+ }
}
public String toString()
More information about the jbosscache-commits
mailing list