JBoss Cache SVN: r5572 - in core/trunk/src/main/java/org/jboss/cache: commands/remote and 3 other directories.
by jbosscache-commits@lists.jboss.org
Author: mircea.markus
Date: 2008-04-15 12:50:16 -0400 (Tue, 15 Apr 2008)
New Revision: 5572
Modified:
core/trunk/src/main/java/org/jboss/cache/commands/cachedata/InvalidateCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/remote/ReplicateCommand.java
core/trunk/src/main/java/org/jboss/cache/interceptors/TxInterceptor.java
core/trunk/src/main/java/org/jboss/cache/invocation/CacheData.java
core/trunk/src/main/java/org/jboss/cache/marshall/CommandAwareRpcDispatcher.java
Log:
JBCACHE-1222 - bug fixing - optimistic locking
Modified: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/InvalidateCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/InvalidateCommand.java 2008-04-15 16:02:29 UTC (rev 5571)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/InvalidateCommand.java 2008-04-15 16:50:16 UTC (rev 5572)
@@ -56,6 +56,7 @@
@Override
public Object perform(InvocationContext ctx)
{
+ //todo - rather than using CacheSPI this can rely in cache loader directly to load data
Node node = spi.getNode(fqn); // force interceptor chain, load if necessary from cache loader.
if (log.isTraceEnabled()) log.trace("Invalidating fqn:" + fqn);
Modified: core/trunk/src/main/java/org/jboss/cache/commands/remote/ReplicateCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/remote/ReplicateCommand.java 2008-04-15 16:02:29 UTC (rev 5571)
+++ core/trunk/src/main/java/org/jboss/cache/commands/remote/ReplicateCommand.java 2008-04-15 16:50:16 UTC (rev 5572)
@@ -1,6 +1,7 @@
package org.jboss.cache.commands.remote;
import org.jboss.cache.InvocationContext;
+import org.jboss.cache.CacheSPI;
import org.jboss.cache.commands.BaseCommand;
import org.jboss.cache.commands.CacheCommand;
import org.jboss.cache.commands.CommandsVisitor;
@@ -8,6 +9,7 @@
import org.jboss.cache.commands.functional.MarshallableCommand;
import org.jboss.cache.factories.annotations.Inject;
import org.jboss.cache.invocation.InterceptorChain;
+import org.jboss.cache.invocation.AbstractInvocationDelegate;
import java.util.List;
@@ -22,7 +24,10 @@
public static final int SINGLE_METHOD_ID = 13;
public static final int MULTIPLE_METHOD_ID = 14;
- private InterceptorChain invoker;
+ //todo [mmarkus] extract the invoking oart from AbstractInvocationDelegate and make a new component that wraps that
+ // logic together with InterceptorChain
+ private AbstractInvocationDelegate invoker;
+
/**
* optimisation - rather than constructing a new list each for scenarios where a single modification needs
* to be replicated rather use this instance.
@@ -45,17 +50,15 @@
}
@Inject
- public void initialize(InterceptorChain invoker)
+ public void initialize(CacheSPI invoker)
{
- this.invoker = invoker;
+ this.invoker = (AbstractInvocationDelegate) invoker;
}
public Object perform(InvocationContext ctx) throws Throwable
{
if (isSingleCommand()) return processSingleCommand(singleModification);
-
for (MarshallableCommand command : modifications) processSingleCommand(command);
-
return null;
}
@@ -66,8 +69,7 @@
try
{
if (trace) log.trace("Invoking command " + cacheCommand + ", with originLocal flag set to false.");
-
- Object retVal = invoker.invoke(cacheCommand, false);
+ Object retVal = invoker.invoke(cacheCommand);
// we only need to return values for a set of remote calls; not every call.
if (returnValueForRemoteCall(cacheCommand))
{
@@ -86,8 +88,7 @@
}
else
{
- if (trace)
- log.trace("Caught an exception, but since this is a putForExternalRead() call, suppressing the exception. Exception is:", ex);
+ if (trace) log.trace("Caught an exception, but since this is a putForExternalRead() call, suppressing the exception. Exception is:", ex);
result = null;
}
}
Modified: core/trunk/src/main/java/org/jboss/cache/interceptors/TxInterceptor.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/interceptors/TxInterceptor.java 2008-04-15 16:02:29 UTC (rev 5571)
+++ core/trunk/src/main/java/org/jboss/cache/interceptors/TxInterceptor.java 2008-04-15 16:50:16 UTC (rev 5572)
@@ -12,6 +12,7 @@
import org.jboss.cache.ReplicationException;
import org.jboss.cache.commands.CacheCommand;
import org.jboss.cache.commands.CommandsFactory;
+import org.jboss.cache.commands.cachedata.InvalidateCommand;
import org.jboss.cache.commands.channel.BlockChannelCommand;
import org.jboss.cache.commands.channel.UnblockChannelCommand;
import org.jboss.cache.commands.functional.TxCacheCommand;
@@ -389,6 +390,12 @@
// --------------------------------------------------------------
+ @Override
+ public Object handleInvalidateCommand(InvocationContext ctx, InvalidateCommand command) throws Throwable
+ {
+ return invokeNextInterceptor(ctx, command);
+ }
+
/**
* Tests if we already have a tx running. If so, register a sync handler for this method invocation.
* if not, create a local tx if we're using opt locking.
Modified: core/trunk/src/main/java/org/jboss/cache/invocation/CacheData.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/invocation/CacheData.java 2008-04-15 16:02:29 UTC (rev 5571)
+++ core/trunk/src/main/java/org/jboss/cache/invocation/CacheData.java 2008-04-15 16:50:16 UTC (rev 5572)
@@ -7,6 +7,7 @@
import org.jboss.cache.Node;
import org.jboss.cache.NodeNotExistsException;
import org.jboss.cache.NodeSPI;
+import org.jboss.cache.factories.annotations.Inject;
import org.jboss.cache.buddyreplication.BuddyFqnTransformer;
import org.jboss.cache.buddyreplication.BuddyManager;
import org.jboss.cache.config.Configuration;
@@ -39,6 +40,11 @@
*/
private NodeSPI root;
+ @Inject
+ public void injectDependencies(Configuration configuration)
+ {
+ this.configuration = configuration;
+ }
/**
* Set<Fqn> of Fqns of the topmost node of internal regions that should
Modified: core/trunk/src/main/java/org/jboss/cache/marshall/CommandAwareRpcDispatcher.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/marshall/CommandAwareRpcDispatcher.java 2008-04-15 16:02:29 UTC (rev 5571)
+++ core/trunk/src/main/java/org/jboss/cache/marshall/CommandAwareRpcDispatcher.java 2008-04-15 16:50:16 UTC (rev 5572)
@@ -1,6 +1,7 @@
package org.jboss.cache.marshall;
import org.jboss.cache.commands.CacheCommand;
+import org.jboss.cache.commands.remote.*;
import org.jboss.cache.invocation.CacheInvocationDelegate;
import org.jgroups.Channel;
import org.jgroups.MembershipListener;
@@ -55,6 +56,13 @@
{
CacheCommand cmd = (CacheCommand) req_marshaller.objectFromByteBuffer(req.getBuffer());
+ //todo [mmarkus] this is very ugly and caused by the fact that in the previous version the call for these methods was not chained.
+ //todo re-thinking of these commands is necessary
+ if (cmd instanceof ReplicateCommand || cmd instanceof AssignToBuddyGroupCommand || cmd instanceof RemoveFromBuddyGroupCommand ||
+ cmd instanceof AnnounceBuddyPoolNameCommand || cmd instanceof DataGravitationCleanupCommand || cmd instanceof ClusteredGetCommand)
+ {
+ return cmd.perform(null);
+ }
if (trace) log.trace("[sender=" + req.getSrc() + "], command: " + cmd);
return cid.invoke(cmd);
16 years, 2 months
JBoss Cache SVN: r5571 - in core/trunk/src: main/java/org/jboss/cache/commands and 4 other directories.
by jbosscache-commits@lists.jboss.org
Author: manik.surtani(a)jboss.com
Date: 2008-04-15 12:02:29 -0400 (Tue, 15 Apr 2008)
New Revision: 5571
Added:
core/trunk/src/main/java/org/jboss/cache/commands/cachedata/CreateNodeCommand.java
Modified:
core/trunk/src/main/java/org/jboss/cache/UnversionedNode.java
core/trunk/src/main/java/org/jboss/cache/commands/CommandsFactory.java
core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutKeyValueCommand.java
core/trunk/src/main/java/org/jboss/cache/interceptors/CacheStoreInterceptor.java
core/trunk/src/main/java/org/jboss/cache/transaction/TransactionEntry.java
core/trunk/src/test/java/org/jboss/cache/loader/CacheLoaderTestsBase.java
Log:
Fixed more loader issues, added a CreateNodeCommand mainly for rolling back PutKeyValue commands that implicitly create nodes.
Modified: core/trunk/src/main/java/org/jboss/cache/UnversionedNode.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/UnversionedNode.java 2008-04-15 15:11:00 UTC (rev 5570)
+++ core/trunk/src/main/java/org/jboss/cache/UnversionedNode.java 2008-04-15 16:02:29 UTC (rev 5571)
@@ -10,6 +10,7 @@
import org.apache.commons.logging.LogFactory;
import static org.jboss.cache.AbstractNode.NodeFlags.*;
import org.jboss.cache.commands.CommandsFactory;
+import org.jboss.cache.commands.cachedata.CreateNodeCommand;
import org.jboss.cache.factories.annotations.CacheInjectionMethods;
import org.jboss.cache.factories.annotations.Inject;
import org.jboss.cache.lock.IdentityLock;
@@ -272,13 +273,11 @@
child = newChild;
children.put(child_name, child);
- // why is this needed?
-// if (gtx != null)
-// {
-
-// RemoveNodeCommand undoOp = commandsFactory.buildRemoveNodeCommand(gtx, child_fqn, false, false, false);
-// transactionTable.addUndoOperation(gtx, undoOp);
-// }
+ if (gtx != null)
+ {
+ CreateNodeCommand createNodeCommand = commandsFactory.buildCreateNodeCommand(child_fqn);
+ transactionTable.addModification(gtx, createNodeCommand);
+ }
}
}
Modified: core/trunk/src/main/java/org/jboss/cache/commands/CommandsFactory.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/CommandsFactory.java 2008-04-15 15:11:00 UTC (rev 5570)
+++ core/trunk/src/main/java/org/jboss/cache/commands/CommandsFactory.java 2008-04-15 16:02:29 UTC (rev 5571)
@@ -266,6 +266,13 @@
return command;
}
+ public CreateNodeCommand buildCreateNodeCommand(Fqn fqn)
+ {
+ CreateNodeCommand cmd = new CreateNodeCommand(fqn);
+ registry.wireDependencies(cmd);
+ return cmd;
+ }
+
/**
* Builds a cache command based on the ID passed in and an object array of parameters
*
Added: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/CreateNodeCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/CreateNodeCommand.java (rev 0)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/CreateNodeCommand.java 2008-04-15 16:02:29 UTC (rev 5571)
@@ -0,0 +1,79 @@
+package org.jboss.cache.commands.cachedata;
+
+import org.jboss.cache.Fqn;
+import org.jboss.cache.InvocationContext;
+import org.jboss.cache.NodeSPI;
+import org.jboss.cache.commands.CommandsVisitor;
+import org.jboss.cache.commands.functional.TxCacheCommand;
+import org.jboss.cache.commands.state.BaseCacheDataCommand;
+
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * Command that creates a node. Primarily to be used as an undo command for removing nodes.
+ *
+ * @author Manik Surtani (<a href="mailto:manik@jboss.org">manik(a)jboss.org</a>)
+ * @since 2.2.0
+ */
+public class CreateNodeCommand extends BaseCacheDataCommand implements TxCacheCommand
+{
+ public static final int METHOD_ID = 48;
+ private List<Fqn> newlyCreated = new LinkedList<Fqn>();
+
+ public CreateNodeCommand()
+ {
+ }
+
+ public CreateNodeCommand(Fqn fqn)
+ {
+ this.fqn = fqn;
+ newlyCreated.add(fqn);
+ }
+
+ public int getCommandId()
+ {
+ return METHOD_ID;
+ }
+
+ public Object perform(InvocationContext ctx) throws Throwable
+ {
+ Object[] results = cacheData.createNodes(fqn);
+ List<NodeSPI> created = (List<NodeSPI>) results[0];
+
+ boolean foundFqn = false;
+ if (!created.isEmpty())
+ {
+ for (NodeSPI n : created)
+ {
+ if (fqn.equals(n.getFqn())) foundFqn = true;
+ newlyCreated.add(n.getFqn());
+ }
+ }
+ if (!foundFqn) newlyCreated.remove(fqn);
+
+ return results[1];
+ }
+
+ public Object accept(InvocationContext ctx, CommandsVisitor handler) throws Throwable
+ {
+ throw new RuntimeException("Not designed to be called via any handlers!!");
+ }
+
+ public void rollback()
+ {
+ if (newlyCreated != null)
+ {
+ for (Fqn f : newlyCreated) cacheData.realRemove(f, true);
+ }
+ }
+
+ @Override
+ public String toString()
+ {
+ return "CreateNodeCommand{" +
+ "fqn=" + fqn +
+ ", newlyCreated=" + newlyCreated +
+ '}';
+ }
+}
Modified: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutKeyValueCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutKeyValueCommand.java 2008-04-15 15:11:00 UTC (rev 5570)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutKeyValueCommand.java 2008-04-15 16:02:29 UTC (rev 5571)
@@ -1,5 +1,6 @@
package org.jboss.cache.commands.cachedata;
+import org.jboss.cache.CacheException;
import org.jboss.cache.Fqn;
import org.jboss.cache.InvocationContext;
import org.jboss.cache.NodeSPI;
@@ -85,7 +86,7 @@
if (this.oldValue == null)
{
NodeSPI n = cacheData.findNode(fqn);
- if (n == null) log.warn("node " + fqn + " not found");
+ if (n == null) throw new CacheException("node " + fqn + " not found for rollback!");
n.removeDirect(key);
}
else
Modified: core/trunk/src/main/java/org/jboss/cache/interceptors/CacheStoreInterceptor.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/interceptors/CacheStoreInterceptor.java 2008-04-15 15:11:00 UTC (rev 5570)
+++ core/trunk/src/main/java/org/jboss/cache/interceptors/CacheStoreInterceptor.java 2008-04-15 16:02:29 UTC (rev 5571)
@@ -392,9 +392,9 @@
loader.prepare(gtx, modsBuilder.modifications, onePhase);
preparingTxs.put(gtx, modsBuilder.affectedFqns);
- if (configuration.getExposeManagementStatistics() && getStatisticsEnabled() && modsBuilder.putConunt > 0)
+ if (configuration.getExposeManagementStatistics() && getStatisticsEnabled() && modsBuilder.putCount > 0)
{
- txStores.put(gtx, modsBuilder.putConunt);
+ txStores.put(gtx, modsBuilder.putCount);
}
}
}
@@ -402,7 +402,7 @@
public static class StoreModificationsBuilder extends AbstractCommandsVisitor
{
boolean generateStatistics;
- int putConunt;
+ int putCount;
Set<Fqn> affectedFqns = new HashSet<Fqn>();
List<Modification> modifications = new ArrayList<Modification>();
@@ -411,9 +411,10 @@
this.generateStatistics = generateStatistics;
}
+ @Override
public Object handlePutDataMapCommand(InvocationContext ctx, PutDataMapCommand command) throws Throwable
{
- if (generateStatistics) putConunt++;
+ if (generateStatistics) putCount++;
if (command.isEraseContents())
{
modifications.add(new Modification(Modification.ModificationType.PUT_DATA_ERASE, command.getFqn(), command.getData()));
@@ -426,15 +427,17 @@
return null;
}
+ @Override
public Object handlePutKeyValueCommand(InvocationContext ctx, PutKeyValueCommand command) throws Throwable
{
- if (generateStatistics) putConunt++;
+ if (generateStatistics) putCount++;
modifications.add(new Modification(Modification.ModificationType.PUT_KEY_VALUE, command.getFqn(),
command.getKey(), command.getValue()));
affectedFqns.add(command.getFqn());
return null;
}
+ @Override
public Object handleRemoveKeyCommand(InvocationContext ctx, RemoveKeyCommand command) throws Throwable
{
modifications.add(new Modification(Modification.ModificationType.REMOVE_KEY_VALUE, command.getFqn(), command.getKey()));
@@ -442,6 +445,7 @@
return null;
}
+ @Override
public Object handleRemoveDataCommand(InvocationContext ctx, RemoveDataCommand command) throws Throwable
{
modifications.add(new Modification(Modification.ModificationType.REMOVE_DATA, command.getFqn()));
@@ -449,6 +453,15 @@
return null;
}
+ @Override
+ public Object handleRemoveNodeCommand(InvocationContext ctx, RemoveNodeCommand command) throws Throwable
+ {
+ modifications.add(new Modification(Modification.ModificationType.REMOVE_NODE, command.getFqn()));
+ affectedFqns.add(command.getFqn());
+ return null;
+ }
+
+ @Override
public Object handleMoveCommand(InvocationContext ctx, MoveCommand command) throws Throwable
{
Fqn moveFrom = command.getFqn();
Modified: core/trunk/src/main/java/org/jboss/cache/transaction/TransactionEntry.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/transaction/TransactionEntry.java 2008-04-15 15:11:00 UTC (rev 5570)
+++ core/trunk/src/main/java/org/jboss/cache/transaction/TransactionEntry.java 2008-04-15 16:02:29 UTC (rev 5571)
@@ -101,15 +101,15 @@
/**
* Adds a modification to the modification list.
*/
- public void addModification(TxCacheCommand TxCacheCommand)
+ public void addModification(TxCacheCommand command)
{
- if (TxCacheCommand == null) return;
- modificationList.add(TxCacheCommand);
+ if (command == null) return;
+ modificationList.add(command);
}
- public void addCacheLoaderModification(TxCacheCommand TxCacheCommand)
+ public void addCacheLoaderModification(TxCacheCommand command)
{
- if (TxCacheCommand != null) classLoadeModList.add(TxCacheCommand);
+ if (command != null) classLoadeModList.add(command);
}
/**
@@ -326,6 +326,7 @@
{
Object undoOp = i.previous();
TxCacheCommand txCommand = (TxCacheCommand) undoOp;
+ if (log.isDebugEnabled()) log.debug("Calling rollback() on command " + undoOp);
txCommand.rollback();
}
}
Modified: core/trunk/src/test/java/org/jboss/cache/loader/CacheLoaderTestsBase.java
===================================================================
--- core/trunk/src/test/java/org/jboss/cache/loader/CacheLoaderTestsBase.java 2008-04-15 15:11:00 UTC (rev 5570)
+++ core/trunk/src/test/java/org/jboss/cache/loader/CacheLoaderTestsBase.java 2008-04-15 16:02:29 UTC (rev 5571)
@@ -1097,8 +1097,8 @@
assertEquals(null, cache.get("/one/two/three", "key1"));
assertEquals(null, cache.get("/one/two/three/four", "key2"));
addDelay();
- assertNull("Loader does not have node /one/two/three", loader.get(Fqn.fromString("/one/two/three")));
- assertNull("Cache does not have node /one/two/three", cache.getKeys("/one/two/three"));
+ assertNull("Loader should not have node /one/two/three", loader.get(Fqn.fromString("/one/two/three")));
+ assertNull("Cache should not have node /one/two/three", cache.getKeys("/one/two/three"));
Set<?> children = cache.getChildrenNames("/one");
assertEquals("Cache has no children under /one", 0, children.size());
children = loader.getChildrenNames(Fqn.fromString("/one"));
16 years, 2 months
JBoss Cache SVN: r5570 - in core/trunk/src: main/java/org/jboss/cache/interceptors and 1 other directories.
by jbosscache-commits@lists.jboss.org
Author: manik.surtani(a)jboss.com
Date: 2008-04-15 11:11:00 -0400 (Tue, 15 Apr 2008)
New Revision: 5570
Modified:
core/trunk/src/main/java/org/jboss/cache/factories/ComponentRegistry.java
core/trunk/src/main/java/org/jboss/cache/interceptors/CallInterceptor.java
core/trunk/src/test/java/org/jboss/cache/loader/CacheLoaderPurgingTest.java
Log:
Updated construction sequence
Modified: core/trunk/src/main/java/org/jboss/cache/factories/ComponentRegistry.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/factories/ComponentRegistry.java 2008-04-15 13:48:32 UTC (rev 5569)
+++ core/trunk/src/main/java/org/jboss/cache/factories/ComponentRegistry.java 2008-04-15 15:11:00 UTC (rev 5570)
@@ -9,8 +9,16 @@
import org.jboss.cache.config.ConfigurationException;
import org.jboss.cache.config.RuntimeConfig;
import static org.jboss.cache.factories.ComponentRegistry.State.*;
-import org.jboss.cache.factories.annotations.*;
-import org.jboss.cache.invocation.*;
+import org.jboss.cache.factories.annotations.CacheInjectionMethods;
+import org.jboss.cache.factories.annotations.ComponentName;
+import org.jboss.cache.factories.annotations.DefaultFactoryFor;
+import org.jboss.cache.factories.annotations.Destroy;
+import org.jboss.cache.factories.annotations.Inject;
+import org.jboss.cache.factories.annotations.Start;
+import org.jboss.cache.factories.annotations.Stop;
+import org.jboss.cache.invocation.CacheData;
+import org.jboss.cache.invocation.CacheLifecycleManager;
+import org.jboss.cache.invocation.InterceptorChain;
import org.jboss.cache.util.BeanUtils;
import org.jboss.cache.util.reflect.CachedMethod;
import org.jboss.cache.util.reflect.ReflectionUtil;
@@ -18,7 +26,12 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import java.util.*;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
/**
* A registry where components which have been created are stored. Components are stored as singletons, registered under
@@ -263,6 +276,11 @@
return getOrCreateComponent(null, componentClass);
}
+ public <T> T getOrCreateComponent(String componentName, Class<T> componentClass)
+ {
+ return getOrCreateComponent(componentName, componentClass, CONSTRUCTED);
+ }
+
/**
* Retrieves a named component if one exists, and if not, attempts to find a factory capable of constructing the component
* (factories annotated with the {@link org.jboss.cache.factories.annotations.DefaultFactoryFor} annotation that is capable
@@ -279,10 +297,11 @@
*
* @param componentName name of component to be created. If null, uses the fully qualified class name as component name.
* @param componentClass type of component to be retrieved. Should not be null.
+ * @param state state to move component to
* @return a fully wired component instance, or null if one cannot be found or constructed.
* @throws ConfigurationException if there is a problem with consructing or wiring the instance.
*/
- public <T> T getOrCreateComponent(String componentName, Class<T> componentClass)
+ public <T> T getOrCreateComponent(String componentName, Class<T> componentClass, State state)
{
T component = getComponent(componentName == null ? componentClass.getName() : componentName, componentClass);
@@ -313,6 +332,10 @@
registerNullComponent(componentNameToUse, componentClass);
}
}
+
+ // guarantee state
+// Component c = componentLookup.get(componentName);
+// if (c != null) c.changeState(state);
return component;
}
@@ -421,7 +444,13 @@
public void unregisterComponent(String name)
{
Component c = componentLookup.remove(name);
- if (c != null) c.changeState(c.state == STARTED ? STOPPED : CONSTRUCTED);
+ if (c != null)
+ {
+ c.changeState(c.state == STARTED ? STOPPED : CONSTRUCTED);
+
+ c.dependencies.clear();
+ c.dependencyFor.clear();
+ }
}
/**
@@ -494,7 +523,7 @@
for (int i = 0; i < parameterTypes.length; i++)
{
- parameters[i] = getComponent(componentsToInject.get(i).name, parameterTypes[i]);
+ parameters[i] = getOrCreateComponent(componentsToInject.get(i).name, parameterTypes[i]);
}
Method reflectMethod = method.getMethod();
@@ -639,7 +668,7 @@
cr.changeState(CONSTRUCTED);
bootstrap = new Bootstrap((ClassLoader) deployerClassLoader.instance, (InterceptorChain) interceptorChain.instance,
- (CacheLifecycleManager)lifeCycleManager.instance, (CacheData)cacheData.instance, (CacheSPI) spi.instance,
+ (CacheLifecycleManager) lifeCycleManager.instance, (CacheData) cacheData.instance, (CacheSPI) spi.instance,
(ComponentRegistry) cr.instance, (Configuration) conf.instance);
overallState = null;
@@ -678,10 +707,11 @@
bootstrap.bootstrap();
}
- for (Component c : componentLookup.values())
- {
- c.changeState(state);
- }
+ // copy the component lookup CHM to prevent concurrent modification exceptions later on, if components need to be
+ // constructed and added to the system on the fly.
+ Set<Component> components = new HashSet<Component>(componentLookup.values());
+ for (Component c : components) c.changeState(state);
+
overallState = state;
}
@@ -805,23 +835,25 @@
{
if (d != null)
{
- if (d.instance == null)
+
+ //if (d.instance == null)
+ //{
+ // this is a "hollow" component that has not been constructed yet. Another "constructed" version probably exists in the
+ // componentLookup. Make sure we replace this.
+ // always lookup from the component registry!!
+ Component c = componentLookup.get(d.name);
+ if (increase)
{
- // this is a "hollow" component that has not been constructed yet. Another "constructed" version probably exists in the
- // componentLookup. Make sure we replace this.
- Component c = componentLookup.get(d.name);
- if (increase)
- {
- dependencies.remove(d);
- dependencies.add(c);
- }
- else
- {
- dependencyFor.remove(d);
- dependencies.add(c);
- }
- d = c;
+ dependencies.remove(d);
+ dependencies.add(c);
}
+ else
+ {
+ dependencyFor.remove(d);
+ dependencies.add(c);
+ }
+ d = c;
+ //}
if (d != null)
{
@@ -858,7 +890,7 @@
destroy();
break;
case CONSTRUCTED:
- // nothing to do here.
+ // do nothing
}
state = newState;
Modified: core/trunk/src/main/java/org/jboss/cache/interceptors/CallInterceptor.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/interceptors/CallInterceptor.java 2008-04-15 13:48:32 UTC (rev 5569)
+++ core/trunk/src/main/java/org/jboss/cache/interceptors/CallInterceptor.java 2008-04-15 15:11:00 UTC (rev 5570)
@@ -14,8 +14,8 @@
import org.jboss.cache.config.Configuration;
import org.jboss.cache.config.Option;
import org.jboss.cache.factories.annotations.Inject;
+import org.jboss.cache.factories.annotations.Start;
import org.jboss.cache.interceptors.base.ChainedInterceptor;
-import org.jboss.cache.loader.CacheLoaderManager;
import org.jboss.cache.transaction.GlobalTransaction;
import org.jboss.cache.transaction.TransactionTable;
@@ -35,19 +35,27 @@
public class CallInterceptor extends ChainedInterceptor
{
- private CacheLoaderManager cacheLoaderManager;
+ // private CacheLoaderManager cacheLoaderManager;
private TransactionTable transactionTable;
private Configuration configuration;
+ private boolean cacheLoadingEnabled;
@Inject
- public void injectDependencies(CacheLoaderManager cacheLoaderManager, TransactionTable transactionTable,
+ public void injectDependencies(TransactionTable transactionTable,
Configuration configuration)
{
- this.cacheLoaderManager = cacheLoaderManager;
+// this.cacheLoaderManager = cacheLoaderManager;
this.transactionTable = transactionTable;
this.configuration = configuration;
}
+ @Start
+ public void startInterceptor()
+ {
+ cacheLoadingEnabled = configuration.getCacheLoaderConfig() != null &&
+ configuration.getCacheLoaderConfig().getFirstCacheLoaderConfig() != null;
+ }
+
public Object handlePrepareCommand(InvocationContext ctx, PrepareCommand command) throws Throwable
{
if (trace) log.trace("Suppressing invocation of method handlePrepareCommand.");
@@ -152,8 +160,8 @@
}
// todo: consolidate cache loader and regular modification lists!!
- if (cacheLoaderManager != null)
- transactionTable.addCacheLoaderModification(gtx, command);
+// if (cacheLoaderManager != null)
+ if (cacheLoadingEnabled) transactionTable.addCacheLoaderModification(gtx, command);
}
}
return result;
Modified: core/trunk/src/test/java/org/jboss/cache/loader/CacheLoaderPurgingTest.java
===================================================================
--- core/trunk/src/test/java/org/jboss/cache/loader/CacheLoaderPurgingTest.java 2008-04-15 13:48:32 UTC (rev 5569)
+++ core/trunk/src/test/java/org/jboss/cache/loader/CacheLoaderPurgingTest.java 2008-04-15 15:11:00 UTC (rev 5570)
@@ -65,7 +65,7 @@
public void testSingleLoaderPurge() throws Exception
{
- cache = (CacheSPI<Object, Object>) new DefaultCacheFactory().createCache(false);
+ cache = (CacheSPI<Object, Object>) new DefaultCacheFactory<Object, Object>().createCache(false);
Configuration c = cache.getConfiguration();
c.setCacheLoaderConfig(getSingleCacheLoaderConfig("", DummySharedInMemoryCacheLoader.class.getName(), "", false, false, false, true));
cache.start();
16 years, 2 months
JBoss Cache SVN: r5569 - in core/trunk/src: main/java/org/jboss/cache/commands and 3 other directories.
by jbosscache-commits@lists.jboss.org
Author: mircea.markus
Date: 2008-04-15 09:48:32 -0400 (Tue, 15 Apr 2008)
New Revision: 5569
Modified:
core/trunk/src/main/java/org/jboss/cache/RPCManagerImpl.java
core/trunk/src/main/java/org/jboss/cache/commands/CommandsFactory.java
core/trunk/src/main/java/org/jboss/cache/commands/cachedata/InvalidateCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutDataMapCommand.java
core/trunk/src/main/java/org/jboss/cache/interceptors/InvalidationInterceptor.java
core/trunk/src/main/java/org/jboss/cache/interceptors/TxInterceptor.java
core/trunk/src/test/java/org/jboss/cache/api/DestroyedCacheAPITest.java
Log:
JBCACHE-1222 - bug fixing - optimistic
Modified: core/trunk/src/main/java/org/jboss/cache/RPCManagerImpl.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/RPCManagerImpl.java 2008-04-15 11:58:33 UTC (rev 5568)
+++ core/trunk/src/main/java/org/jboss/cache/RPCManagerImpl.java 2008-04-15 13:48:32 UTC (rev 5569)
@@ -675,6 +675,5 @@
}
}
-
/*------------------- End of MembershipListener ----------------------*/
}
\ No newline at end of file
Modified: core/trunk/src/main/java/org/jboss/cache/commands/CommandsFactory.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/CommandsFactory.java 2008-04-15 11:58:33 UTC (rev 5568)
+++ core/trunk/src/main/java/org/jboss/cache/commands/CommandsFactory.java 2008-04-15 13:48:32 UTC (rev 5569)
@@ -354,6 +354,9 @@
case ReplicateCommand.SINGLE_METHOD_ID:
returnValue = new ReplicateCommand();
break;
+ case InvalidateCommand.METHOD_ID:
+ returnValue = new InvalidateCommand();
+ break;
default:
throw new CacheException("Unknown command id " + id + "!");
Modified: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/InvalidateCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/InvalidateCommand.java 2008-04-15 11:58:33 UTC (rev 5568)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/InvalidateCommand.java 2008-04-15 13:48:32 UTC (rev 5569)
@@ -36,6 +36,11 @@
private boolean isOptimisticLocking;
private TransactionManager transactionManager;
+ public InvalidateCommand()
+ {
+ super(null);
+ }
+
public InvalidateCommand(Fqn fqn)
{
super(fqn);
@@ -53,6 +58,7 @@
{
Node node = spi.getNode(fqn); // force interceptor chain, load if necessary from cache loader.
+ if (log.isTraceEnabled()) log.trace("Invalidating fqn:" + fqn);
if (node == null)
{
// if pessimistic locking, just return.
@@ -160,4 +166,12 @@
{
return METHOD_ID;
}
+
+ public String toString()
+ {
+ return "InvalidateCommand{" +
+ "dataVersion=" + dataVersion+
+ ", fqn=" + fqn +
+ '}';
+ }
}
Modified: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutDataMapCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutDataMapCommand.java 2008-04-15 11:58:33 UTC (rev 5568)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutDataMapCommand.java 2008-04-15 13:48:32 UTC (rev 5569)
@@ -30,7 +30,6 @@
/* dependencies*/
private GlobalTransaction globalTransaction;
- private TransactionTable transactionTable;
/* parameters*/
private Map data;
@@ -51,12 +50,6 @@
this.eraseContents = eraseContents;
}
- @Inject
- public void initialize(TransactionTable txTable)
- {
- this.transactionTable = txTable;
- }
-
public Object perform(InvocationContext ctx)
{
if (log.isTraceEnabled())
@@ -185,4 +178,16 @@
result = 31 * result + (eraseContents ? 1 : 0);
return result;
}
+
+
+ public String toString()
+ {
+ return "PutDataMapCommand{" +
+ "eraseContents=" + eraseContents +
+ ", createUndoOps=" + createUndoOps +
+ ", dataVersion=" + dataVersion +
+ ", data=" + data +
+ ", globalTransaction=" + globalTransaction +
+ '}';
+ }
}
Modified: core/trunk/src/main/java/org/jboss/cache/interceptors/InvalidationInterceptor.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/interceptors/InvalidationInterceptor.java 2008-04-15 11:58:33 UTC (rev 5568)
+++ core/trunk/src/main/java/org/jboss/cache/interceptors/InvalidationInterceptor.java 2008-04-15 13:48:32 UTC (rev 5569)
@@ -238,6 +238,7 @@
private void broadcastInvalidate(List<TxCacheCommand> modifications, GlobalTransaction gtx, Transaction tx, InvocationContext ctx) throws Throwable
{
+ if (modifications == null || modifications.isEmpty()) return;
InvalidationFilterVisitor filterVisitor = new InvalidationFilterVisitor(modifications.size());
filterVisitor.visitCollection(null, modifications);
@@ -358,6 +359,7 @@
// increment invalidations counter if statistics maintained
incrementInvalidations();
InvalidateCommand call = commandsFactory.buildInvalidateCommand(fqn);
+ call.setDataVersion(getNodeVersion(workspace, fqn));
if (log.isDebugEnabled()) log.debug("Cache [" + rpcManager.getLocalAddress() + "] replicating " + call);
// voila, invalidated!
replicateCall(ctx, call, synchronous, ctx.getOptionOverrides());
Modified: core/trunk/src/main/java/org/jboss/cache/interceptors/TxInterceptor.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/interceptors/TxInterceptor.java 2008-04-15 11:58:33 UTC (rev 5568)
+++ core/trunk/src/main/java/org/jboss/cache/interceptors/TxInterceptor.java 2008-04-15 13:48:32 UTC (rev 5569)
@@ -12,6 +12,8 @@
import org.jboss.cache.ReplicationException;
import org.jboss.cache.commands.CacheCommand;
import org.jboss.cache.commands.CommandsFactory;
+import org.jboss.cache.commands.channel.BlockChannelCommand;
+import org.jboss.cache.commands.channel.UnblockChannelCommand;
import org.jboss.cache.commands.functional.TxCacheCommand;
import org.jboss.cache.commands.state.DataVersionCommand;
import org.jboss.cache.commands.state.GlobalTransactionCommand;
@@ -454,9 +456,18 @@
}
}
- /**
- * @param ctx
- */
+ @Override
+ public Object handleBlockChannelCommand(InvocationContext ctx, BlockChannelCommand command) throws Throwable
+ {
+ return invokeNextInterceptor(ctx, command);
+ }
+
+ @Override
+ public Object handleUnblockChannelCommand(InvocationContext ctx, UnblockChannelCommand command) throws Throwable
+ {
+ return invokeNextInterceptor(ctx, command);
+ }
+
private void copyForcedCacheModeToTxScope(InvocationContext ctx)
{
Option optionOverride = ctx.getOptionOverrides();
Modified: core/trunk/src/test/java/org/jboss/cache/api/DestroyedCacheAPITest.java
===================================================================
--- core/trunk/src/test/java/org/jboss/cache/api/DestroyedCacheAPITest.java 2008-04-15 11:58:33 UTC (rev 5568)
+++ core/trunk/src/test/java/org/jboss/cache/api/DestroyedCacheAPITest.java 2008-04-15 13:48:32 UTC (rev 5569)
@@ -34,6 +34,7 @@
private Fqn parent = Fqn.fromString("/test/fqn");
private Fqn child = Fqn.fromString("/test/fqn/child");
private String version;
+ private Node<String,String> root;
@BeforeMethod(alwaysRun = true)
public void setUp() throws Exception
@@ -46,6 +47,7 @@
version = cache.getVersion();
cache.getRoot().addChild(parent);
cache.getRoot().addChild(child);
+ root = cache.getRoot();
cache.stop();
cache.destroy();
}
@@ -261,23 +263,6 @@
}
/**
- * Tests that Cache.getRoot() returns a node.
- * <p/>
- * BES 2008/03/22 -- This behavior is not actually documented. Maintainers
- * shouldn't feel constrained from updating this test to match
- * agreed upon behavior changes; I'm just adding it so any changes to the
- * current behavior will trigger failures and ensure that people are aware of
- * the change and agree that it's correct.
- */
- public void testGetRoot()
- {
- Node root = cache.getRoot();
- assertNotNull("have root", root);
- assertEquals(Fqn.ROOT, root.getFqn());
- }
-
-
- /**
* Tests the basic node addition, existence check, get, remove operations.
* Expectation is all will throw an ISE.
* <p/>
@@ -289,7 +274,6 @@
*/
public void testNodeAPI()
{
- Node root = cache.getRoot();
try
{
root.addChild(parent);
16 years, 2 months
JBoss Cache SVN: r5568 - in core/trunk/src: main/java/org/jboss/cache/invocation and 1 other directories.
by jbosscache-commits@lists.jboss.org
Author: manik.surtani(a)jboss.com
Date: 2008-04-15 07:58:33 -0400 (Tue, 15 Apr 2008)
New Revision: 5568
Modified:
core/trunk/src/main/java/org/jboss/cache/interceptors/CacheLoaderInterceptor.java
core/trunk/src/main/java/org/jboss/cache/interceptors/CacheStoreInterceptor.java
core/trunk/src/main/java/org/jboss/cache/invocation/AbstractInvocationDelegate.java
core/trunk/src/main/java/org/jboss/cache/invocation/CacheData.java
core/trunk/src/main/java/org/jboss/cache/invocation/CacheLifecycleManager.java
core/trunk/src/test/java/org/jboss/cache/loader/CacheLoaderTestsBase.java
core/trunk/src/test/java/org/jboss/cache/loader/DummyInMemoryCacheLoader.java
core/trunk/src/test/java/org/jboss/cache/loader/DummySharedInMemoryCacheLoader.java
Log:
fixed a bunch of cache loader issues
Modified: core/trunk/src/main/java/org/jboss/cache/interceptors/CacheLoaderInterceptor.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/interceptors/CacheLoaderInterceptor.java 2008-04-15 02:09:13 UTC (rev 5567)
+++ core/trunk/src/main/java/org/jboss/cache/interceptors/CacheLoaderInterceptor.java 2008-04-15 11:58:33 UTC (rev 5568)
@@ -495,12 +495,13 @@
return n;
}
-
+ @SuppressWarnings("unchecked")
private NodeSPI createNodes(Fqn fqn, TransactionEntry entry) throws Exception
{
- List<NodeSPI> createdNodes = cacheData.createNodes(fqn);
+ Object[] results = cacheData.createNodes(fqn);
+ List<NodeSPI> createdNodes = (List<NodeSPI>) results[0];
- // root node
+ NodeSPI lastCreated = null;
for (NodeSPI node : createdNodes)
{
node.setDataLoaded(false);
@@ -508,14 +509,14 @@
{
entry.loadUninitialisedNode(node.getFqn());
}
+ lastCreated = node;
}
- if (createdNodes.size() > 0)
- {
- NodeSPI last = createdNodes.get(createdNodes.size() - 1);
- last.setDataLoaded(true);
- return last;
- }
- return null;
+
+ // mark the leaf node as data loaded since that is what we are doing in this interceptor.
+ if (lastCreated != null) lastCreated.setDataLoaded(true);
+
+ // regardless of whether the last node was created, return it.
+ return (NodeSPI) results[1];
}
private Map loadData(Fqn fqn) throws Exception
Modified: core/trunk/src/main/java/org/jboss/cache/interceptors/CacheStoreInterceptor.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/interceptors/CacheStoreInterceptor.java 2008-04-15 02:09:13 UTC (rev 5567)
+++ core/trunk/src/main/java/org/jboss/cache/interceptors/CacheStoreInterceptor.java 2008-04-15 11:58:33 UTC (rev 5568)
@@ -20,9 +20,11 @@
import org.jboss.cache.config.CacheLoaderConfig;
import org.jboss.cache.config.Configuration;
import org.jboss.cache.factories.annotations.Inject;
+import org.jboss.cache.factories.annotations.Start;
import org.jboss.cache.interceptors.base.SkipCheckChainedInterceptor;
import org.jboss.cache.invocation.CacheData;
import org.jboss.cache.loader.CacheLoader;
+import org.jboss.cache.loader.CacheLoaderManager;
import org.jboss.cache.transaction.GlobalTransaction;
import org.jboss.cache.transaction.TransactionEntry;
import org.jboss.cache.transaction.TransactionTable;
@@ -55,6 +57,7 @@
private CacheLoader loader;
private Configuration configuration;
private CacheData cacheData;
+ private CacheLoaderManager loaderManager;
public CacheStoreInterceptor()
{
@@ -63,9 +66,10 @@
}
@Inject
- protected void init(CacheData cacheData, CacheLoader loader, TransactionManager txManager, TransactionTable txTable, CacheLoaderConfig clConfig, Configuration configuration)
+ protected void init(CacheData cacheData, CacheLoaderManager loaderManager, TransactionManager txManager, TransactionTable txTable, CacheLoaderConfig clConfig, Configuration configuration)
{
- this.loader = loader;
+ // never inject a CacheLoader at this stage - only a CacheLoaderManager, since the CacheLoaderManager only creates a CacheLoader instance when it @Starts.
+ this.loaderManager = loaderManager;
this.loaderConfig = clConfig;
txMgr = txManager;
this.txTable = txTable;
@@ -73,6 +77,13 @@
this.cacheData = cacheData;
}
+ @Start
+ protected void start()
+ {
+ // this should only happen after the CacheLoaderManager has started, since the CacheLoaderManager only creates the CacheLoader instance in it's @Start method.
+ loader = loaderManager.getCacheLoader();
+ }
+
/**
* if this is a shared cache loader and the call is of remote origin, pass up the chain
*/
@@ -184,7 +195,7 @@
if (inTransaction())
{
if (trace) log.trace("transactional so don't put stuff in the cloader yet.");
- prepareCacheLoader(command.getGlobalTransaction(), ctx.getMethodCall().isOnePhaseCommitPrepareMehod());
+ prepareCacheLoader(command.getGlobalTransaction(), command.isOnePhaseCommit());
}
return invokeNextInterceptor(ctx, command);
}
Modified: core/trunk/src/main/java/org/jboss/cache/invocation/AbstractInvocationDelegate.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/invocation/AbstractInvocationDelegate.java 2008-04-15 02:09:13 UTC (rev 5567)
+++ core/trunk/src/main/java/org/jboss/cache/invocation/AbstractInvocationDelegate.java 2008-04-15 11:58:33 UTC (rev 5568)
@@ -37,7 +37,7 @@
* Used by the interceptor chain factory to inject dependencies.
*/
@Inject
- public void initialise(Configuration configuration, InvocationContextContainer invocationContextContainer,
+ public void initialize(Configuration configuration, InvocationContextContainer invocationContextContainer,
CacheLifecycleManager lifecycleManager, InterceptorChain interceptorChain)
{
this.configuration = configuration;
Modified: core/trunk/src/main/java/org/jboss/cache/invocation/CacheData.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/invocation/CacheData.java 2008-04-15 02:09:13 UTC (rev 5567)
+++ core/trunk/src/main/java/org/jboss/cache/invocation/CacheData.java 2008-04-15 11:58:33 UTC (rev 5568)
@@ -214,7 +214,7 @@
private void buildNodesForEviction(Node node, List<Fqn> nodes)
{
- if (node != null && node.isResident())
+ if (node == null || node.isResident())
{
return;
}
@@ -223,7 +223,7 @@
{
for (Object childName : node.getChildrenNames())
{
- if (node != null && node.isResident()) nodes.add(Fqn.fromRelativeElements(fqn, childName));
+ if (!node.isResident()) nodes.add(Fqn.fromRelativeElements(fqn, childName));
}
}
else
@@ -489,9 +489,22 @@
n.setDataLoaded(false);
}
- public List<NodeSPI> createNodes(Fqn fqn)
+ /**
+ * Traverses the tree to the given Fqn, creating nodes if needed. Returns a list of nodes created, as well as a reference to the last node.
+ * <p/>
+ * E.g.,
+ * <code>
+ * Object[] results = createNode(myFqn);
+ * results[0] // this is a List<NodeSPI> of nodes <i>created</i> in getting to the target node.
+ * results[1] // is a NodeSPI reference to the target node, regardless of whether it was <i>created</i> or just <i>found</i>.
+ * </code>
+ *
+ * @param fqn fqn to find
+ * @return see above.
+ */
+ public Object[] createNodes(Fqn fqn)
{
- List result = new ArrayList();
+ List<NodeSPI> result = new ArrayList<NodeSPI>(fqn.size());
Fqn tmpFqn = Fqn.ROOT;
int size = fqn.size();
@@ -505,24 +518,17 @@
NodeSPI childNode;
Map children = n.getChildrenMapDirect();
- if (children == null)
- {
- childNode = null;
- }
- else
- {
- childNode = (NodeSPI) children.get(childName);
- }
+ childNode = children == null ? null : (NodeSPI) children.get(childName);
if (childNode == null)
{
+ childNode = n.addChildDirect(Fqn.fromElements(childName));
+ result.add(childNode);
+ }
- result.add(n.addChildDirect(Fqn.fromElements(childName)));
-
- }
n = childNode;
}
- return result;
+ return new Object[]{result, n};
}
/**
Modified: core/trunk/src/main/java/org/jboss/cache/invocation/CacheLifecycleManager.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/invocation/CacheLifecycleManager.java 2008-04-15 02:09:13 UTC (rev 5567)
+++ core/trunk/src/main/java/org/jboss/cache/invocation/CacheLifecycleManager.java 2008-04-15 11:58:33 UTC (rev 5568)
@@ -123,6 +123,7 @@
}
catch (Throwable t)
{
+// if (log.isTraceEnabled()) log.trace("InternalStart had problems: ", t);
handleLifecycleTransitionFailure(t);
}
}
Modified: core/trunk/src/test/java/org/jboss/cache/loader/CacheLoaderTestsBase.java
===================================================================
--- core/trunk/src/test/java/org/jboss/cache/loader/CacheLoaderTestsBase.java 2008-04-15 02:09:13 UTC (rev 5567)
+++ core/trunk/src/test/java/org/jboss/cache/loader/CacheLoaderTestsBase.java 2008-04-15 11:58:33 UTC (rev 5568)
@@ -59,14 +59,22 @@
@BeforeMethod(alwaysRun = true)
public void setUp() throws Exception
{
- cache = (CacheSPI<Object, Object>) new DefaultCacheFactory().createCache(false);
- Configuration c = cache.getConfiguration();
- c.setCacheMode(Configuration.CacheMode.LOCAL);
- c.setTransactionManagerLookupClass(TransactionSetup.getManagerLookup());
- configureCache();
- cache.start();
- loader = cache.getCacheLoaderManager().getCacheLoader();
- postConfigure();
+ try
+ {
+ cache = (CacheSPI<Object, Object>) new DefaultCacheFactory().createCache(false);
+ Configuration c = cache.getConfiguration();
+ c.setCacheMode(Configuration.CacheMode.LOCAL);
+ c.setTransactionManagerLookupClass(TransactionSetup.getManagerLookup());
+ configureCache();
+ cache.start();
+ loader = cache.getCacheLoaderManager().getCacheLoader();
+ postConfigure();
+ }
+ catch (Exception e)
+ {
+// e.printStackTrace();
+ throw e;
+ }
}
protected void postConfigure()
Modified: core/trunk/src/test/java/org/jboss/cache/loader/DummyInMemoryCacheLoader.java
===================================================================
--- core/trunk/src/test/java/org/jboss/cache/loader/DummyInMemoryCacheLoader.java 2008-04-15 02:09:13 UTC (rev 5567)
+++ core/trunk/src/test/java/org/jboss/cache/loader/DummyInMemoryCacheLoader.java 2008-04-15 11:58:33 UTC (rev 5568)
@@ -6,6 +6,13 @@
*/
package org.jboss.cache.loader;
+import net.jcip.annotations.ThreadSafe;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jboss.cache.Fqn;
+import org.jboss.cache.Modification;
+import org.jboss.cache.config.CacheLoaderConfig.IndividualCacheLoaderConfig;
+
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -13,14 +20,6 @@
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
-import net.jcip.annotations.ThreadSafe;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.jboss.cache.Fqn;
-import org.jboss.cache.Modification;
-import org.jboss.cache.config.CacheLoaderConfig.IndividualCacheLoaderConfig;
-
/**
* Dummy cache loader that stores data in memory
*
@@ -36,12 +35,14 @@
protected boolean debug; // whether to dump System.out messages as well as log messages or not
protected final Object NULL = new Object()
{
+ @Override
public String toString()
{
return "NULL placeholder";
}
};
protected IndividualCacheLoaderConfig config;
+
public void setConfig(IndividualCacheLoaderConfig config)
{
this.config = config;
@@ -253,21 +254,22 @@
this.fqn = fqn;
}
+ @Override
public String toString()
{
return "Node{" +
- "data=" + data +
- ", fqn=" + fqn +
- '}';
+ "data=" + data +
+ ", fqn=" + fqn +
+ '}';
}
}
-
+ @Override
public String toString()
{
return "DummyInMemoryCacheLoader{" +
- "getNodesMap()=" + getNodesMap() +
- '}';
+ "getNodesMap()=" + getNodesMap() +
+ '}';
}
protected void debugMessage(String msg)
Modified: core/trunk/src/test/java/org/jboss/cache/loader/DummySharedInMemoryCacheLoader.java
===================================================================
--- core/trunk/src/test/java/org/jboss/cache/loader/DummySharedInMemoryCacheLoader.java 2008-04-15 02:09:13 UTC (rev 5567)
+++ core/trunk/src/test/java/org/jboss/cache/loader/DummySharedInMemoryCacheLoader.java 2008-04-15 11:58:33 UTC (rev 5568)
@@ -4,13 +4,12 @@
import org.jboss.cache.config.CacheLoaderConfig;
import java.util.Map;
-import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;
/**
* An extension of the {@link org.jboss.cache.loader.DummyInMemoryCacheLoader} that uses static maps for data, children,
* etc. so it can be shared across instances, emulating a shared database or filesystem cache loader.
- *
+ * <p/>
* Since 2.1.0, this dummy cache loader will take an optional parameter, "bin", which contains the name of the "bin" to use
* in the static field to store the content. This allows for tests to mimic multiple shared cache loaders in the same cache.
*
@@ -42,6 +41,7 @@
return BINS.get(bin);
}
+ @Override
public void wipe()
{
BINS.clear();
16 years, 2 months
JBoss Cache SVN: r5567 - in core/trunk/src: main/java/org/jboss/cache/commands/cachedata and 4 other directories.
by jbosscache-commits@lists.jboss.org
Author: manik.surtani(a)jboss.com
Date: 2008-04-14 22:09:13 -0400 (Mon, 14 Apr 2008)
New Revision: 5567
Modified:
core/trunk/src/main/java/org/jboss/cache/UnversionedNode.java
core/trunk/src/main/java/org/jboss/cache/commands/cachedata/MoveCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutDataMapCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutKeyValueCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveDataCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveKeyCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveNodeCommand.java
core/trunk/src/main/java/org/jboss/cache/interceptors/BaseRpcInterceptor.java
core/trunk/src/main/java/org/jboss/cache/interceptors/CallInterceptor.java
core/trunk/src/main/java/org/jboss/cache/interceptors/OptimisticReplicationInterceptor.java
core/trunk/src/main/java/org/jboss/cache/interceptors/ReplicationInterceptor.java
core/trunk/src/main/java/org/jboss/cache/interceptors/TxInterceptor.java
core/trunk/src/main/java/org/jboss/cache/lock/LockManager.java
core/trunk/src/main/java/org/jboss/cache/transaction/TransactionEntry.java
core/trunk/src/main/java/org/jboss/cache/transaction/TransactionTable.java
core/trunk/src/test/java/org/jboss/cache/replicated/AsyncReplTest.java
core/trunk/src/test/java/org/jboss/cache/replicated/SyncReplTxTest.java
Log:
Transaction rollback fixes
Modified: core/trunk/src/main/java/org/jboss/cache/UnversionedNode.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/UnversionedNode.java 2008-04-15 00:34:48 UTC (rev 5566)
+++ core/trunk/src/main/java/org/jboss/cache/UnversionedNode.java 2008-04-15 02:09:13 UTC (rev 5567)
@@ -10,7 +10,6 @@
import org.apache.commons.logging.LogFactory;
import static org.jboss.cache.AbstractNode.NodeFlags.*;
import org.jboss.cache.commands.CommandsFactory;
-import org.jboss.cache.commands.cachedata.RemoveNodeCommand;
import org.jboss.cache.factories.annotations.CacheInjectionMethods;
import org.jboss.cache.factories.annotations.Inject;
import org.jboss.cache.lock.IdentityLock;
@@ -272,11 +271,14 @@
if (notify) cache.getNotifier().notifyNodeCreated(child_fqn, true, ctx);
child = newChild;
children.put(child_name, child);
- if (gtx != null)
- {
- RemoveNodeCommand undoOp = commandsFactory.buildRemoveNodeCommand(gtx, child_fqn, false, false, false);
- transactionTable.addUndoOperation(gtx, undoOp);
- }
+
+ // why is this needed?
+// if (gtx != null)
+// {
+
+// RemoveNodeCommand undoOp = commandsFactory.buildRemoveNodeCommand(gtx, child_fqn, false, false, false);
+// transactionTable.addUndoOperation(gtx, undoOp);
+// }
}
}
Modified: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/MoveCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/MoveCommand.java 2008-04-15 00:34:48 UTC (rev 5566)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/MoveCommand.java 2008-04-15 02:09:13 UTC (rev 5567)
@@ -99,12 +99,6 @@
if (!skipNotifications)
notifier.notifyNodeMoved(nodeToMoveFqn, Fqn.fromRelativeElements(newParentFqn, nodeToMoveFqn.getLastElement()), false, ctx);
-
- // now register an undo op
- if (ctx.getTransaction() != null)
- {
- transactionTable.addUndoOperation(ctx.getGlobalTransaction(), this);
- }
}
public Fqn getTo()
Modified: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutDataMapCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutDataMapCommand.java 2008-04-15 00:34:48 UTC (rev 5566)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutDataMapCommand.java 2008-04-15 02:09:13 UTC (rev 5567)
@@ -66,14 +66,9 @@
NodeSPI nodeSPI = cacheData.findNodeCheck(globalTransaction, fqn, false);
oldData = nodeSPI.getDataDirect();
notifier.notifyNodeModified(fqn, true, NodeModifiedEvent.ModificationType.PUT_MAP, oldData, ctx);
- if (globalTransaction != null && createUndoOps)
- {
- transactionTable.addUndoOperation(globalTransaction, this);
- }
- if (eraseContents)
- {
- nodeSPI.clearDataDirect();
- }
+
+ if (eraseContents) nodeSPI.clearDataDirect();
+
nodeSPI.putAllDirect(data);
notifier.notifyNodeModified(fqn, false, NodeModifiedEvent.ModificationType.PUT_MAP, nodeSPI.getDataDirect(), ctx);
return null;
Modified: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutKeyValueCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutKeyValueCommand.java 2008-04-15 00:34:48 UTC (rev 5566)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutKeyValueCommand.java 2008-04-15 02:09:13 UTC (rev 5567)
@@ -74,11 +74,7 @@
Map rawData = n.getDataDirect();
notifier.notifyNodeModified(fqn, true, NodeModifiedEvent.ModificationType.PUT_DATA, rawData, ctx);
oldValue = n.putDirect(key, value);
- // this modification) and put it into the TX's undo list.
- if (globalTransaction != null && createUndoOps)
- {
- transactionTable.addUndoOperation(globalTransaction, this);
- }
+
Map newData = Collections.singletonMap(key, value);
notifier.notifyNodeModified(fqn, false, NodeModifiedEvent.ModificationType.PUT_DATA, newData, ctx);
return oldValue;
Modified: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveDataCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveDataCommand.java 2008-04-15 00:34:48 UTC (rev 5566)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveDataCommand.java 2008-04-15 02:09:13 UTC (rev 5567)
@@ -76,18 +76,9 @@
notifyAfter(data, ctx);
- registerForRollback();
return null;
}
- private void registerForRollback()
- {
- if (globalTransaction != null && createUndoops)
- {
- transactionTable.addUndoOperation(globalTransaction, this);
- }
- }
-
private void prepareDataForRollback(Map data)
{
if (globalTransaction != null && createUndoops && !eviction && !data.isEmpty())
Modified: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveKeyCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveKeyCommand.java 2008-04-15 00:34:48 UTC (rev 5566)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveKeyCommand.java 2008-04-15 02:09:13 UTC (rev 5567)
@@ -68,10 +68,6 @@
this.oldValue = n.removeDirect(key);
- if (globalTransaction != null && createUndoOps && oldValue != null)
- {
- transactionTable.addUndoOperation(globalTransaction, this);
- }
Map removedData = Collections.singletonMap(key, oldValue);
notifier.notifyNodeModified(fqn, false, NodeModifiedEvent.ModificationType.REMOVE_DATA, removedData, ctx);
return oldValue;
Modified: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveNodeCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveNodeCommand.java 2008-04-15 00:34:48 UTC (rev 5566)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveNodeCommand.java 2008-04-15 02:09:13 UTC (rev 5567)
@@ -96,7 +96,6 @@
if (globalTransaction != null && createUndoOps && !eviction && found)
{
parentFqn = parentNode.getFqn();
- transactionTable.addUndoOperation(globalTransaction, this);
}
notifyAfterEviction(ctx);
Modified: core/trunk/src/main/java/org/jboss/cache/interceptors/BaseRpcInterceptor.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/interceptors/BaseRpcInterceptor.java 2008-04-15 00:34:48 UTC (rev 5566)
+++ core/trunk/src/main/java/org/jboss/cache/interceptors/BaseRpcInterceptor.java 2008-04-15 02:09:13 UTC (rev 5567)
@@ -161,9 +161,7 @@
protected boolean skipReplicationOfTransactionMethod(InvocationContext ctx)
{
GlobalTransaction gtx = ctx.getGlobalTransaction();
- boolean isInitiatedHere = gtx != null && !gtx.isRemote();
- if (trace) log.trace("isInitiatedHere? " + isInitiatedHere + "; gtx = " + gtx);
- return !isTransactionalAndLocal(ctx);
+ return gtx == null || gtx.isRemote();
}
/**
Modified: core/trunk/src/main/java/org/jboss/cache/interceptors/CallInterceptor.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/interceptors/CallInterceptor.java 2008-04-15 00:34:48 UTC (rev 5566)
+++ core/trunk/src/main/java/org/jboss/cache/interceptors/CallInterceptor.java 2008-04-15 02:09:13 UTC (rev 5567)
@@ -2,11 +2,11 @@
import org.jboss.cache.InvocationContext;
import org.jboss.cache.commands.CacheCommand;
-import org.jboss.cache.commands.functional.TxCacheCommand;
import org.jboss.cache.commands.cachedata.PutDataMapCommand;
import org.jboss.cache.commands.cachedata.PutKeyValueCommand;
import org.jboss.cache.commands.cachedata.RemoveDataCommand;
import org.jboss.cache.commands.cachedata.RemoveNodeCommand;
+import org.jboss.cache.commands.functional.TxCacheCommand;
import org.jboss.cache.commands.tx.CommitCommand;
import org.jboss.cache.commands.tx.OptimisticPrepareCommand;
import org.jboss.cache.commands.tx.PrepareCommand;
@@ -51,28 +51,24 @@
public Object handlePrepareCommand(InvocationContext ctx, PrepareCommand command) throws Throwable
{
if (trace) log.trace("Suppressing invocation of method handlePrepareCommand.");
- Transaction tx = ctx.getTransaction();
return null;
}
public Object handleOptimisticPrepareCommand(InvocationContext ctx, OptimisticPrepareCommand command) throws Throwable
{
if (trace) log.trace("Suppressing invocation of method handleOptimisticPrepareCommand.");
- Transaction tx = ctx.getTransaction();
return null;
}
public Object handleCommitCommand(InvocationContext ctx, CommitCommand command) throws Throwable
{
if (trace) log.trace("Suppressing invocation of method handleCommitCommand.");
- Transaction tx = ctx.getTransaction();
return null;
}
public Object handleRollbackCommand(InvocationContext ctx, RollbackCommand command) throws Throwable
{
if (trace) log.trace("Suppressing invocation of method handleRollbackCommand.");
- Transaction tx = ctx.getTransaction();
return null;
}
@@ -104,22 +100,22 @@
public Object handlePutDataMapCommand(InvocationContext ctx, PutDataMapCommand command) throws Throwable
{
- return handleAlterChacheMethod(ctx, command);
+ return handleAlterCacheMethod(ctx, command);
}
public Object handlePutKeyValueCommand(InvocationContext ctx, PutKeyValueCommand command) throws Throwable
{
- return handleAlterChacheMethod(ctx, command);
+ return handleAlterCacheMethod(ctx, command);
}
public Object handleRemoveNodeCommand(InvocationContext ctx, RemoveNodeCommand command) throws Throwable
{
- return handleAlterChacheMethod(ctx, command);
+ return handleAlterCacheMethod(ctx, command);
}
public Object handleRemoveDataCommand(InvocationContext ctx, RemoveDataCommand command) throws Throwable
{
- return handleAlterChacheMethod(ctx, command);
+ return handleAlterCacheMethod(ctx, command);
}
/**
@@ -128,7 +124,7 @@
* in case a method has been invoked that the OptimisticNodeInterceptor knows nothing about, it will
* filter down here.
*/
- private Object handleAlterChacheMethod(InvocationContext ctx, TxCacheCommand command)
+ private Object handleAlterCacheMethod(InvocationContext ctx, TxCacheCommand command)
throws Throwable
{
Object result = invokeCommand(ctx, command);
@@ -141,16 +137,21 @@
{
log.debug("didn't find GlobalTransaction for " + ctx.getTransaction() + "; won't add modification to transaction list");
}
- } else
+ }
+ else
{
Option o = ctx.getOptionOverrides();
if (o != null && o.isCacheModeLocal())
{
log.debug("Not adding method to modification list since cache mode local is set.");
- } else
+ }
+ else
{
+ // TODO: Revisit this, this is a bug if a local rollback occurs!!
transactionTable.addModification(gtx, command);
}
+
+ // todo: consolidate cache loader and regular modification lists!!
if (cacheLoaderManager != null)
transactionTable.addCacheLoaderModification(gtx, command);
}
Modified: core/trunk/src/main/java/org/jboss/cache/interceptors/OptimisticReplicationInterceptor.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/interceptors/OptimisticReplicationInterceptor.java 2008-04-15 00:34:48 UTC (rev 5566)
+++ core/trunk/src/main/java/org/jboss/cache/interceptors/OptimisticReplicationInterceptor.java 2008-04-15 02:09:13 UTC (rev 5567)
@@ -286,16 +286,19 @@
this.workspace = workspace;
}
+ @Override
public Object handleDataGravitationCleanupCommand(InvocationContext ctx, DataGravitationCleanupCommand command) throws Throwable
{
return command;
}
+ @Override
public Object handleGravitateDataCommand(InvocationContext ctx, GravitateDataCommand command) throws Throwable
{
return command;
}
+ @Override
public Object handleEvictFqnCommand(InvocationContext ctx, EvictNodeCommand command) throws Throwable
{
EvictNodeCommand clone = commandsFactory.buildEvictFqnCommand(command.getFqn());
@@ -309,18 +312,21 @@
return clone;
}
+ @Override
public Object handlePutDataMapCommand(InvocationContext ctx, PutDataMapCommand command) throws Throwable
{
PutDataMapCommand clone = commandsFactory.buildPutDataMapCommand(null, command.getFqn(), command.getData(), command.isCreateUndoOps(), command.isEraseContents());
return setDataVersion(clone, clone.getFqn());
}
+ @Override
public Object handlePutKeyValueCommand(InvocationContext ctx, PutKeyValueCommand command) throws Throwable
{
PutKeyValueCommand clone = commandsFactory.buildPutKeyValueCommand(null, command.getFqn(), command.getKey(), command.getValue(), command.isCreateUndoOps(), command.isPutForExternalRead());
return setDataVersion(clone, command.getFqn());
}
+ @Override
public Object handleRemoveNodeCommand(InvocationContext ctx, RemoveNodeCommand command) throws Throwable
{
RemoveNodeCommand clone = commandsFactory.buildRemoveNodeCommand(command.getGlobalTransaction(), command.getFqn(), command.isEviction(),
@@ -328,12 +334,14 @@
return setDataVersion(clone, command.getFqn());
}
+ @Override
public Object handleRemoveKeyCommand(InvocationContext ctx, RemoveKeyCommand command) throws Throwable
{
RemoveKeyCommand clone = commandsFactory.buildRemoveKeyCommand(null, command.getFqn(), command.getKey(), command.isCreateUndoOps());
return setDataVersion(clone, command.getFqn());
}
+ @Override
public Object handleRemoveDataCommand(InvocationContext ctx, RemoveDataCommand command) throws Throwable
{
RemoveDataCommand clone = commandsFactory.buildRemoveDataCommand(command.getGlobalTransaction(), command.getFqn(), command.isCreateUndoops(),
@@ -341,6 +349,7 @@
return setDataVersion(clone, command.getFqn());
}
+ @Override
public Object handleDefault(InvocationContext ctx, CacheCommand command) throws Throwable
{
throw new CacheException("Not handling " + command + " commads!");
Modified: core/trunk/src/main/java/org/jboss/cache/interceptors/ReplicationInterceptor.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/interceptors/ReplicationInterceptor.java 2008-04-15 00:34:48 UTC (rev 5566)
+++ core/trunk/src/main/java/org/jboss/cache/interceptors/ReplicationInterceptor.java 2008-04-15 02:09:13 UTC (rev 5567)
@@ -14,6 +14,7 @@
import org.jboss.cache.commands.tx.RollbackCommand;
import org.jboss.cache.config.Configuration;
import org.jboss.cache.config.Option;
+import org.jboss.cache.factories.annotations.Inject;
import org.jboss.cache.transaction.GlobalTransaction;
import org.jboss.cache.transaction.TransactionTable;
@@ -29,6 +30,7 @@
{
private TransactionTable transactionTable;
+ @Inject
public void setDependencies(TransactionTable txTable)
{
this.transactionTable = txTable;
@@ -45,6 +47,7 @@
return false;
}
+ @Override
public Object handleCommitCommand(InvocationContext ctx, CommitCommand command) throws Throwable
{
if (!skipReplicationOfTransactionMethod(ctx))
@@ -52,6 +55,7 @@
return invokeNextInterceptor(ctx, command);
}
+ @Override
public Object handlePrepareCommand(InvocationContext ctx, PrepareCommand command) throws Throwable
{
Object retVal = invokeNextInterceptor(ctx, command);
@@ -59,6 +63,7 @@
return retVal;
}
+ @Override
public Object handleRollbackCommand(InvocationContext ctx, RollbackCommand command) throws Throwable
{
if (!skipReplicationOfTransactionMethod(ctx) && !ctx.isLocalRollbackOnly())
@@ -68,13 +73,17 @@
return invokeNextInterceptor(ctx, command);
}
+ @Override
public Object handlePutKeyValueCommand(InvocationContext ctx, PutKeyValueCommand command) throws Throwable
{
if (skipReplication(ctx)) return invokeNextInterceptor(ctx, command);
if (isTransactionalAndLocal(ctx))
{
Object returnValue = invokeNextInterceptor(ctx, command);
- transactionTable.get(command.getGlobalTransaction()).setForceAsyncReplication(true);
+ if (command.isPutForExternalRead())
+ {
+ transactionTable.get(command.getGlobalTransaction()).setForceAsyncReplication(true);
+ }
return returnValue;
}
else
@@ -83,31 +92,37 @@
}
}
+ @Override
public Object handlePutDataMapCommand(InvocationContext ctx, PutDataMapCommand command) throws Throwable
{
return handleCrudMethod(ctx, command, false);
}
+ @Override
public Object handleDataGravitationCleanupCommand(InvocationContext ctx, DataGravitationCleanupCommand command) throws Throwable
{
return handleCrudMethod(ctx, command, false);
}
+ @Override
public Object handleMoveCommand(InvocationContext ctx, MoveCommand command) throws Throwable
{
return handleCrudMethod(ctx, command, false);
}
+ @Override
public Object handleRemoveNodeCommand(InvocationContext ctx, RemoveNodeCommand command) throws Throwable
{
return handleCrudMethod(ctx, command, false);
}
+ @Override
public Object handleRemoveKeyCommand(InvocationContext ctx, RemoveKeyCommand command) throws Throwable
{
return handleCrudMethod(ctx, command, false);
}
+ @Override
public Object handleRemoveDataCommand(InvocationContext ctx, RemoveDataCommand command) throws Throwable
{
return handleCrudMethod(ctx, command, false);
Modified: core/trunk/src/main/java/org/jboss/cache/interceptors/TxInterceptor.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/interceptors/TxInterceptor.java 2008-04-15 00:34:48 UTC (rev 5566)
+++ core/trunk/src/main/java/org/jboss/cache/interceptors/TxInterceptor.java 2008-04-15 02:09:13 UTC (rev 5567)
@@ -10,9 +10,9 @@
import org.jboss.cache.InvocationContext;
import org.jboss.cache.RPCManager;
import org.jboss.cache.ReplicationException;
-import org.jboss.cache.factories.annotations.Inject;
import org.jboss.cache.commands.CacheCommand;
import org.jboss.cache.commands.CommandsFactory;
+import org.jboss.cache.commands.functional.TxCacheCommand;
import org.jboss.cache.commands.state.DataVersionCommand;
import org.jboss.cache.commands.state.GlobalTransactionCommand;
import org.jboss.cache.commands.tx.CommitCommand;
@@ -23,6 +23,7 @@
import org.jboss.cache.commands.visitors.GlobalTransactionCommandsVisitor;
import org.jboss.cache.config.Configuration;
import org.jboss.cache.config.Option;
+import org.jboss.cache.factories.annotations.Inject;
import org.jboss.cache.invocation.CacheLifecycleManager;
import org.jboss.cache.invocation.CacheTransactionHelper;
import org.jboss.cache.invocation.InvocationContextContainer;
@@ -32,7 +33,11 @@
import org.jboss.cache.transaction.TransactionEntry;
import org.jboss.cache.transaction.TxUtil;
-import javax.transaction.*;
+import javax.transaction.InvalidTransactionException;
+import javax.transaction.Status;
+import javax.transaction.Synchronization;
+import javax.transaction.SystemException;
+import javax.transaction.Transaction;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -75,7 +80,7 @@
@Inject
- public void intialize(Configuration configuration, RPCManager rpcManager,
+ public void intialize(Configuration configuration, RPCManager rpcManager,
CacheTransactionHelper transactionHelper, Notifier notifier, InvocationContextContainer icc,
CacheLifecycleManager lifecycleManager, CommandsFactory factory)
{
@@ -108,7 +113,8 @@
result = handleRemotePrepare(ctx, command, command.isOnePhaseCommit());
scrubTxsOnExit = true;
incresePrepares();
- } else
+ }
+ else
{
if (trace) log.trace("received my own message (discarding it)");
result = null;
@@ -315,7 +321,8 @@
{
log.debug("Started new local TX as result of remote PREPARE: local TX=" + ltx + " (Status=" + ltx.getStatus() + "), global TX=" + gtx);
}
- } else
+ }
+ else
{
//this should be valid
if (!ctx.isValidTransaction())
@@ -347,7 +354,8 @@
log.debug("creating new tx entry");
txTable.put(gtx, entry);
if (trace) log.trace("TxTable contents: " + txTable);
- } else
+ }
+ else
{
entry = txTable.get(gtx);
}
@@ -359,7 +367,8 @@
if (configuration.isNodeLockingOptimistic())
{
retval = handleOptimisticPrepare(ctx, gtx, ltx, (OptimisticPrepareCommand) command);
- } else
+ }
+ else
{
retval = handlePessimisticPrepare(ctx, ltx, command);
}
@@ -429,7 +438,8 @@
log.warn("Roll back failed encountered", th);
}
throw t;
- } else
+ }
+ else
{
throw t;
}
@@ -481,7 +491,8 @@
if (gtx != null)
{
command = replaceGtx(command, gtx);
- } else
+ }
+ else
{
// get the current globalTransaction from the txTable.
gtx = txTable.get(tx);
@@ -532,16 +543,17 @@
{
if (trace)
log.trace("Using one-phase prepare. Not propagating the prepare call up the stack until called to do so by the sync handler.");
- } else
+ }
+ else
{
invokeNextInterceptor(ctx, command);
}
// JBCACHE-361 Confirm that the transaction is ACTIVE
- if (ctx.isValidTransaction())
+ if (!ctx.isValidTransaction())
{
throw new ReplicationException("prepare() failed -- " +
- "local transaction status is not STATUS_ACTIVE;" +
+ "local transaction status is not valid;" +
" is " + ltx.getStatus());
}
}
@@ -575,7 +587,8 @@
if (success)
{
ltx.commit();
- } else
+ }
+ else
{
ltx.rollback();
}
@@ -643,7 +656,8 @@
{
log.error("method invocation failed", t);
throw t;
- } finally
+ }
+ finally
{
ctx.setOptionOverrides(originalOption);
}
@@ -726,11 +740,13 @@
if (configuration.isNodeLockingOptimistic())
{
commitCommand = commandsFactory.buildOptimisticPrepareCommand(gtx, null);
- } else
+ }
+ else
{
commitCommand = commandsFactory.buildPrepareCommand(gtx, modifications, rpcManager.getLocalAddress(), true);
}
- } else
+ }
+ else
{
commitCommand = commandsFactory.buildCommitCommand(gtx);
}
@@ -781,12 +797,13 @@
*
* @param gtx
*/
- protected void runRollbackPhase(InvocationContext ctx, GlobalTransaction gtx, Transaction tx, List modifications)
+ protected void runRollbackPhase(InvocationContext ctx, GlobalTransaction gtx, Transaction tx, List<TxCacheCommand> modifications)
{
//Transaction ltx = null;
try
{
ctx.setTxHasMods(modifications != null && modifications.size() > 0);
+
// JBCACHE-457
CacheCommand rollbackCommand = commandsFactory.buildRollbackCommand(gtx);
if (trace)
@@ -829,7 +846,8 @@
if (configuration.isNodeLockingOptimistic())
{
prepareCommand = commandsFactory.buildOptimisticPrepareCommand(gtx, null);
- } else if (configuration.getCacheMode() != Configuration.CacheMode.REPL_ASYNC)
+ }
+ else if (configuration.getCacheMode() != Configuration.CacheMode.REPL_ASYNC)
{
prepareCommand = commandsFactory.buildPrepareCommand(gtx, modifications, rpcManager.getLocalAddress(),
false);// don't commit or rollback - wait for call
@@ -855,7 +873,8 @@
{
ctx.setExecutingCommand(prepareCommand);
result = invokeNextInterceptor(ctx, prepareCommand);
- } else
+ }
+ else
{
log.warn("Local transaction does not exist or does not match expected transaction " + gtx);
throw new CacheException(" local transaction " + ltx + " does not exist or does not match expected transaction " + gtx);
@@ -888,7 +907,8 @@
{
log.trace("is a remotely initiated gtx so no need to register a tx for it");
}
- } else
+ }
+ else
{
if (trace)
{
@@ -898,10 +918,12 @@
LocalSynchronizationHandler myHandler = new LocalSynchronizationHandler(gtx, tx, !ctx.isOriginLocal());
registerHandler(tx, myHandler, ctx, txTable.get(gtx));
}
- } else if ((gtx = (GlobalTransaction) rollbackTransactions.get(tx)) != null)
+ }
+ else if ((gtx = (GlobalTransaction) rollbackTransactions.get(tx)) != null)
{
if (log.isDebugEnabled()) log.debug("Transaction " + tx + " is already registered and is rolling back.");
- } else
+ }
+ else
{
if (log.isDebugEnabled()) log.debug("Transaction " + tx + " is already registered.");
Modified: core/trunk/src/main/java/org/jboss/cache/lock/LockManager.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/lock/LockManager.java 2008-04-15 00:34:48 UTC (rev 5566)
+++ core/trunk/src/main/java/org/jboss/cache/lock/LockManager.java 2008-04-15 02:09:13 UTC (rev 5567)
@@ -5,10 +5,10 @@
import org.jboss.cache.Fqn;
import org.jboss.cache.InvocationContext;
import org.jboss.cache.NodeSPI;
-import org.jboss.cache.factories.annotations.Inject;
import org.jboss.cache.commands.CommandsFactory;
import org.jboss.cache.commands.cachedata.PutDataMapCommand;
import org.jboss.cache.config.Configuration;
+import org.jboss.cache.factories.annotations.Inject;
import org.jboss.cache.invocation.CacheData;
import org.jboss.cache.transaction.GlobalTransaction;
import org.jboss.cache.transaction.TransactionEntry;
@@ -263,7 +263,8 @@
//if we'll rollback the tx data should be added to the node again
Map oldData = new HashMap(childNode.getDataDirect());
PutDataMapCommand command = commandsFactory.buildPutDataMapCommand(gtx, fqn, oldData, false, false);
- txTable.get(gtx).addUndoOperation(command);
+ // txTable.get(gtx).addUndoOperation(command); --- now need to make sure this is added to the normal mods list instead
+ txTable.get(gtx).addModification(command);
//we're prepared for rollback, now reset the node
childNode.clearDataDirect();
if (createdNodes != null)
Modified: core/trunk/src/main/java/org/jboss/cache/transaction/TransactionEntry.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/transaction/TransactionEntry.java 2008-04-15 00:34:48 UTC (rev 5566)
+++ core/trunk/src/main/java/org/jboss/cache/transaction/TransactionEntry.java 2008-04-15 02:09:13 UTC (rev 5567)
@@ -12,8 +12,8 @@
import org.apache.commons.logging.LogFactory;
import org.jboss.cache.Fqn;
import org.jboss.cache.Modification;
-import org.jboss.cache.commands.functional.TxCacheCommand;
import org.jboss.cache.commands.cachedata.RemoveNodeCommand;
+import org.jboss.cache.commands.functional.TxCacheCommand;
import org.jboss.cache.config.Option;
import org.jboss.cache.interceptors.OrderedSynchronizationHandler;
import org.jboss.cache.lock.IdentityLock;
@@ -23,7 +23,13 @@
import javax.transaction.RollbackException;
import javax.transaction.SystemException;
import javax.transaction.Transaction;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
import java.util.concurrent.CopyOnWriteArrayList;
/**
@@ -68,14 +74,6 @@
private List<TxCacheCommand> classLoadeModList = new CopyOnWriteArrayList<TxCacheCommand>();
/**
- * List<MethodCall>. List of compensating {@link org.jboss.cache.marshall.MethodCall} objects
- * which revert the ones in <tt>modification_list</tt>. For each entry in the modification list,
- * we have a corresponding entry in this list. A rollback will simply iterate over this list in
- * reverse to undo the modifications. Note that these undo-ops will never be replicated.
- */
- private final List<TxCacheCommand> undoList = new LinkedList();
-
- /**
* LinkedHashSet<IdentityLock> of locks acquired by the transaction. We use
* a LinkedHashSet because we need efficient Set semantics (same lock can
* be added multiple times) but also need guaranteed ordering for use
@@ -147,15 +145,6 @@
}
/**
- * Returns the undo operations in use.
- * Note: This list may be concurrently modified.
- */
- public List<TxCacheCommand> getUndoOperations()
- {
- return undoList;
- }
-
- /**
* Sets the local transaction for this entry.
*/
public void setTransaction(Transaction tx)
@@ -326,12 +315,12 @@
{
if (log.isTraceEnabled())
{
- log.trace("undoOperations " + undoList);
+ log.trace("undoOperations " + modificationList);
}
ArrayList<TxCacheCommand> copy;
- synchronized (undoList)
+ synchronized (modificationList)
{
- copy = new ArrayList<TxCacheCommand>(undoList);
+ copy = new ArrayList<TxCacheCommand>(modificationList);
}
for (ListIterator i = copy.listIterator(copy.size()); i.hasPrevious();)
{
@@ -348,10 +337,6 @@
{
StringBuffer sb = new StringBuffer();
sb.append("TransactionEntry\nmodificationList: ").append(modificationList);
- synchronized (undoList)
- {
- sb.append("\nundoList: ").append(undoList);
- }
synchronized (locks)
{
sb.append("\nlocks: ").append(locks);
@@ -407,17 +392,12 @@
return !modificationList.isEmpty() || !classLoadeModList.isEmpty();
}
- public void addUndoOperation(TxCacheCommand TxCacheCommand)
- {
- undoList.add(TxCacheCommand);
- }
-
public boolean wasRemovedInTx(Fqn fqn)
{
for (TxCacheCommand txCacheCommand : getCacheLoaderModifications())
{
//todo - revisit this as it is ugly. phps add an isRemovred(fqn) somwhere on command hierarchy?
- if (txCacheCommand instanceof RemoveNodeCommand && fqn.isChildOrEquals(((RemoveNodeCommand)txCacheCommand).getFqn()))
+ if (txCacheCommand instanceof RemoveNodeCommand && fqn.isChildOrEquals(((RemoveNodeCommand) txCacheCommand).getFqn()))
{
return true;
}
Modified: core/trunk/src/main/java/org/jboss/cache/transaction/TransactionTable.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/transaction/TransactionTable.java 2008-04-15 00:34:48 UTC (rev 5566)
+++ core/trunk/src/main/java/org/jboss/cache/transaction/TransactionTable.java 2008-04-15 02:09:13 UTC (rev 5567)
@@ -110,7 +110,8 @@
{
if (log.isDebugEnabled()) log.debug("Found local TX=" + ltx + ", global TX=" + gtx);
return ltx;
- } else
+ }
+ else
{
throw new IllegalStateException(" found no local TX for global TX " + gtx);
}
@@ -205,20 +206,6 @@
}
/**
- * Adds an undo operation to the global transaction.
- */
- public void addUndoOperation(GlobalTransaction gtx, TxCacheCommand cacheCommand)
- {
- TransactionEntry entry = get(gtx);
- if (entry == null)
- {
- log.error("transaction not found (globalTransaction=" + gtx + ")");
- return;
- }
- entry.addUndoOperation(cacheCommand);
- }
-
- /**
* Adds a lock to the global transaction.
*/
public void addLock(GlobalTransaction gtx, NodeLock l)
Modified: core/trunk/src/test/java/org/jboss/cache/replicated/AsyncReplTest.java
===================================================================
--- core/trunk/src/test/java/org/jboss/cache/replicated/AsyncReplTest.java 2008-04-15 00:34:48 UTC (rev 5566)
+++ core/trunk/src/test/java/org/jboss/cache/replicated/AsyncReplTest.java 2008-04-15 02:09:13 UTC (rev 5567)
@@ -43,6 +43,7 @@
cache2 = createCache("CacheGroup");
}
+
private CacheSPI<Object, Object> createCache(String name) throws Exception
{
CacheSPI<Object, Object> cache = (CacheSPI<Object, Object>) new DefaultCacheFactory().createCache(UnitTestCacheConfigurationFactory.createConfiguration(CacheMode.REPL_ASYNC), false);
@@ -86,19 +87,7 @@
@AfterMethod(alwaysRun = true)
public void tearDown() throws Exception
{
- if (cache1 != null)
- {
- log("stopping cache1");
- cache1.stop();
- cache1 = null;
- }
-
- if (cache2 != null)
- {
- log("stopping cache2");
- cache2.stop();
- cache2 = null;
- }
+ TestingUtil.killCaches(cache1, cache2);
}
public void testTxCompletion() throws Exception
@@ -138,19 +127,6 @@
assertEquals("value2", cache1.get(fqn, key));
assertEquals("value2", cache2.get(fqn, key));
-
- if (cache1 != null)
- {
- cache1.stop();
- cache1 = null;
- }
-
- if (cache2 != null)
- {
- cache2.stop();
- cache2 = null;
- }
-
}
public void testPutShouldNotReplicateToDifferentCluster()
Modified: core/trunk/src/test/java/org/jboss/cache/replicated/SyncReplTxTest.java
===================================================================
--- core/trunk/src/test/java/org/jboss/cache/replicated/SyncReplTxTest.java 2008-04-15 00:34:48 UTC (rev 5566)
+++ core/trunk/src/test/java/org/jboss/cache/replicated/SyncReplTxTest.java 2008-04-15 02:09:13 UTC (rev 5567)
@@ -164,34 +164,25 @@
Integer age;
Transaction tx;
- try
- {
- initCaches(Configuration.CacheMode.REPL_SYNC);
- cache1.getConfiguration().setSyncCommitPhase(true);
- cache2.getConfiguration().setSyncCommitPhase(true);
+ initCaches(Configuration.CacheMode.REPL_SYNC);
+ cache1.getConfiguration().setSyncCommitPhase(true);
+ cache2.getConfiguration().setSyncCommitPhase(true);
- // assertEquals(2, cache1.getMembers().size());
+ TransactionManager mgr = beginTransaction();
+ cache1.put("/a/b/c", "age", 38);
+ tx = mgr.suspend();
+ assertNull("age on cache2 must be null as the TX has not yet been committed", cache2.get("/a/b/c", "age"));
+ log.debug("cache1: locks held before commit: " + CachePrinter.printCacheLockingInfo(cache1));
+ log.debug("cache2: locks held before commit: " + CachePrinter.printCacheLockingInfo(cache2));
+ mgr.resume(tx);
+ mgr.commit();
+ log.debug("cache1: locks held after commit: " + CachePrinter.printCacheLockingInfo(cache1));
+ log.debug("cache2: locks held after commit: " + CachePrinter.printCacheLockingInfo(cache2));
- TransactionManager mgr = beginTransaction();
- cache1.put("/a/b/c", "age", 38);
- tx = mgr.suspend();
- assertNull("age on cache2 must be null as the TX has not yet been committed", cache2.get("/a/b/c", "age"));
- log.debug("cache1: locks held before commit: " + CachePrinter.printCacheLockingInfo(cache1));
- log.debug("cache2: locks held before commit: " + CachePrinter.printCacheLockingInfo(cache2));
- mgr.resume(tx);
- mgr.commit();
- log.debug("cache1: locks held after commit: " + CachePrinter.printCacheLockingInfo(cache1));
- log.debug("cache2: locks held after commit: " + CachePrinter.printCacheLockingInfo(cache2));
-
- // value on cache2 must be 38
- age = (Integer) cache2.get("/a/b/c", "age");
- assertNotNull("\"age\" obtained from cache2 must be non-null ", age);
- assertTrue("\"age\" must be 38", age == 38);
- }
- catch (Exception e)
- {
- fail(e.toString());
- }
+ // value on cache2 must be 38
+ age = (Integer) cache2.get("/a/b/c", "age");
+ assertNotNull("\"age\" obtained from cache2 must be non-null ", age);
+ assertTrue("\"age\" must be 38", age == 38);
}
/**
16 years, 2 months
JBoss Cache SVN: r5566 - in core/trunk/src/main/java/org/jboss/cache: commands/remote and 1 other directory.
by jbosscache-commits@lists.jboss.org
Author: manik.surtani(a)jboss.com
Date: 2008-04-14 20:34:48 -0400 (Mon, 14 Apr 2008)
New Revision: 5566
Modified:
core/trunk/src/main/java/org/jboss/cache/cluster/ReplicationQueue.java
core/trunk/src/main/java/org/jboss/cache/commands/remote/ReplicateCommand.java
Log:
Fixed issues with replicate command
Modified: core/trunk/src/main/java/org/jboss/cache/cluster/ReplicationQueue.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/cluster/ReplicationQueue.java 2008-04-14 21:11:20 UTC (rev 5565)
+++ core/trunk/src/main/java/org/jboss/cache/cluster/ReplicationQueue.java 2008-04-15 00:34:48 UTC (rev 5566)
@@ -64,10 +64,11 @@
}
@Inject
- private void injectDependencies(RPCManager rpcManager, Configuration configuration)
+ private void injectDependencies(RPCManager rpcManager, Configuration configuration, CommandsFactory commandsFactory)
{
this.rpcManager = rpcManager;
this.configuration = configuration;
+ this.commandsFactory = commandsFactory;
enabled = configuration.isUseReplQueue() && (configuration.getBuddyReplicationConfig() == null || !configuration.getBuddyReplicationConfig().isEnabled());
}
Modified: core/trunk/src/main/java/org/jboss/cache/commands/remote/ReplicateCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/remote/ReplicateCommand.java 2008-04-14 21:11:20 UTC (rev 5565)
+++ core/trunk/src/main/java/org/jboss/cache/commands/remote/ReplicateCommand.java 2008-04-15 00:34:48 UTC (rev 5566)
@@ -8,9 +8,7 @@
import org.jboss.cache.commands.functional.MarshallableCommand;
import org.jboss.cache.factories.annotations.Inject;
import org.jboss.cache.invocation.InterceptorChain;
-import org.jboss.cache.marshall.MethodCallWrapper;
-import java.util.ArrayList;
import java.util.List;
/**
@@ -115,7 +113,7 @@
public int getCommandId()
{
- return isSingleCommand() ? MULTIPLE_METHOD_ID : SINGLE_METHOD_ID;
+ return isSingleCommand() ? SINGLE_METHOD_ID : MULTIPLE_METHOD_ID;
}
public List<MarshallableCommand> getModifications()
@@ -131,9 +129,9 @@
public Object[] getParameters()
{
if (isSingleCommand())
- return new Object[]{toMethodCallList()};
+ return new Object[]{singleModification};
else
- return new Object[]{new MethodCallWrapper(singleModification)};
+ return new Object[]{modifications};
}
@SuppressWarnings("unchecked")
@@ -145,7 +143,7 @@
}
else
{
- modifications = (List<MarshallableCommand>) args[1];
+ modifications = (List<MarshallableCommand>) args[0];
}
}
@@ -154,13 +152,6 @@
return singleModification != null;
}
- private List<MethodCallWrapper> toMethodCallList()
- {
- List<MethodCallWrapper> l = new ArrayList<MethodCallWrapper>(modifications.size());
- for (MarshallableCommand cc : modifications) l.add(new MethodCallWrapper(cc));
- return l;
- }
-
@Override
public boolean equals(Object o)
{
16 years, 2 months
JBoss Cache SVN: r5565 - core/branches/2.1.X/src/main/docbook/userguide/en/modules.
by jbosscache-commits@lists.jboss.org
Author: manik.surtani(a)jboss.com
Date: 2008-04-14 17:11:20 -0400 (Mon, 14 Apr 2008)
New Revision: 5565
Modified:
core/branches/2.1.X/src/main/docbook/userguide/en/modules/basic_api.xml
core/branches/2.1.X/src/main/docbook/userguide/en/modules/configuration.xml
core/branches/2.1.X/src/main/docbook/userguide/en/modules/deployment.xml
Log:
Replaced old DefaultCacheFactory.getInstance() calls with new DefaultCacheFactory()
Modified: core/branches/2.1.X/src/main/docbook/userguide/en/modules/basic_api.xml
===================================================================
--- core/branches/2.1.X/src/main/docbook/userguide/en/modules/basic_api.xml 2008-04-14 21:09:32 UTC (rev 5564)
+++ core/branches/2.1.X/src/main/docbook/userguide/en/modules/basic_api.xml 2008-04-14 21:11:20 UTC (rev 5565)
@@ -91,7 +91,7 @@
</para>
<programlisting role="JAVA"><![CDATA[
- CacheFactory factory = DefaultCacheFactory.getInstance();
+ CacheFactory factory = new DefaultCacheFactory();
Cache cache = factory.createCache();
]]></programlisting>
@@ -102,7 +102,7 @@
</para>
<programlisting role="JAVA"><![CDATA[
- CacheFactory factory = DefaultCacheFactory.getInstance();
+ CacheFactory factory = new DefaultCacheFactory();
Cache cache = factory.createCache("cache-configuration.xml");
]]></programlisting>
@@ -112,7 +112,7 @@
</para>
<programlisting role="JAVA"><![CDATA[
- CacheFactory factory = DefaultCacheFactory.getInstance();
+ CacheFactory factory = new DefaultCacheFactory();
Cache cache = factory.createCache("cache-configuration.xml", false);
Configuration config = cache.getConfiguration();
config.setClusterName(this.getClusterName());
Modified: core/branches/2.1.X/src/main/docbook/userguide/en/modules/configuration.xml
===================================================================
--- core/branches/2.1.X/src/main/docbook/userguide/en/modules/configuration.xml 2008-04-14 21:09:32 UTC (rev 5564)
+++ core/branches/2.1.X/src/main/docbook/userguide/en/modules/configuration.xml 2008-04-14 21:11:20 UTC (rev 5565)
@@ -153,7 +153,7 @@
</para>
<programlisting role="JAVA"><![CDATA[
- CacheFactory factory = DefaultCacheFactory.getInstance();
+ CacheFactory factory = new DefaultCacheFactory();
Cache cache = factory.createCache("cache-configuration.xml");
]]></programlisting>
@@ -211,7 +211,7 @@
config.setEvictionConfig(ec);
- CacheFactory factory = DefaultCacheFactory.getInstance();
+ CacheFactory factory = new DefaultCacheFactory();
Cache cache = factory.createCache(config);
]]></programlisting>
Modified: core/branches/2.1.X/src/main/docbook/userguide/en/modules/deployment.xml
===================================================================
--- core/branches/2.1.X/src/main/docbook/userguide/en/modules/deployment.xml 2008-04-14 21:09:32 UTC (rev 5564)
+++ core/branches/2.1.X/src/main/docbook/userguide/en/modules/deployment.xml 2008-04-14 21:11:20 UTC (rev 5565)
@@ -442,7 +442,7 @@
</para>
<programlisting role="JAVA"><![CDATA[
- CacheFactory factory = DefaultCacheFactory.getInstance();
+ CacheFactory factory = new DefaultCacheFactory();
// Build but don't start the cache
// (although it would work OK if we started it)
Cache cache = factory.createCache("cache-configuration.xml", false);
16 years, 2 months
JBoss Cache SVN: r5564 - core/trunk/src/main/docbook/userguide/en/modules.
by jbosscache-commits@lists.jboss.org
Author: manik.surtani(a)jboss.com
Date: 2008-04-14 17:09:32 -0400 (Mon, 14 Apr 2008)
New Revision: 5564
Modified:
core/trunk/src/main/docbook/userguide/en/modules/basic_api.xml
core/trunk/src/main/docbook/userguide/en/modules/configuration.xml
core/trunk/src/main/docbook/userguide/en/modules/deployment.xml
Log:
Updated old DefaultCacheFactory.getInstance() calls to new DefaultCacheFactory()
Modified: core/trunk/src/main/docbook/userguide/en/modules/basic_api.xml
===================================================================
--- core/trunk/src/main/docbook/userguide/en/modules/basic_api.xml 2008-04-14 21:07:25 UTC (rev 5563)
+++ core/trunk/src/main/docbook/userguide/en/modules/basic_api.xml 2008-04-14 21:09:32 UTC (rev 5564)
@@ -91,7 +91,7 @@
</para>
<programlisting role="JAVA"><![CDATA[
- CacheFactory factory = DefaultCacheFactory.getInstance();
+ CacheFactory factory = new DefaultCacheFactory();
Cache cache = factory.createCache();
]]></programlisting>
@@ -102,7 +102,7 @@
</para>
<programlisting role="JAVA"><![CDATA[
- CacheFactory factory = DefaultCacheFactory.getInstance();
+ CacheFactory factory = new DefaultCacheFactory();
Cache cache = factory.createCache("cache-configuration.xml");
]]></programlisting>
@@ -112,7 +112,7 @@
</para>
<programlisting role="JAVA"><![CDATA[
- CacheFactory factory = DefaultCacheFactory.getInstance();
+ CacheFactory factory = new DefaultCacheFactory();
Cache cache = factory.createCache("cache-configuration.xml", false);
Configuration config = cache.getConfiguration();
config.setClusterName(this.getClusterName());
Modified: core/trunk/src/main/docbook/userguide/en/modules/configuration.xml
===================================================================
--- core/trunk/src/main/docbook/userguide/en/modules/configuration.xml 2008-04-14 21:07:25 UTC (rev 5563)
+++ core/trunk/src/main/docbook/userguide/en/modules/configuration.xml 2008-04-14 21:09:32 UTC (rev 5564)
@@ -153,7 +153,7 @@
</para>
<programlisting role="JAVA"><![CDATA[
- CacheFactory factory = DefaultCacheFactory.getInstance();
+ CacheFactory factory = new DefaultCacheFactory();
Cache cache = factory.createCache("cache-configuration.xml");
]]></programlisting>
@@ -211,7 +211,7 @@
config.setEvictionConfig(ec);
- CacheFactory factory = DefaultCacheFactory.getInstance();
+ CacheFactory factory = new DefaultCacheFactory();
Cache cache = factory.createCache(config);
]]></programlisting>
Modified: core/trunk/src/main/docbook/userguide/en/modules/deployment.xml
===================================================================
--- core/trunk/src/main/docbook/userguide/en/modules/deployment.xml 2008-04-14 21:07:25 UTC (rev 5563)
+++ core/trunk/src/main/docbook/userguide/en/modules/deployment.xml 2008-04-14 21:09:32 UTC (rev 5564)
@@ -442,7 +442,7 @@
</para>
<programlisting role="JAVA"><![CDATA[
- CacheFactory factory = DefaultCacheFactory.getInstance();
+ CacheFactory factory = new DefaultCacheFactory();
// Build but don't start the cache
// (although it would work OK if we started it)
Cache cache = factory.createCache("cache-configuration.xml", false);
16 years, 2 months
JBoss Cache SVN: r5563 - in core/trunk/src/main/java/org/jboss/cache: commands/tx and 2 other directories.
by jbosscache-commits@lists.jboss.org
Author: manik.surtani(a)jboss.com
Date: 2008-04-14 17:07:25 -0400 (Mon, 14 Apr 2008)
New Revision: 5563
Added:
core/trunk/src/main/java/org/jboss/cache/commands/tx/BaseGlobalTransactionCommand.java
Removed:
core/trunk/src/main/java/org/jboss/cache/commands/cachedata/UpdateDataCommand.java
core/trunk/src/main/java/org/jboss/cache/interceptors/UnlockInterceptor.java
Modified:
core/trunk/src/main/java/org/jboss/cache/commands/cachedata/MoveCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutDataMapCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutKeyValueCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveDataCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveKeyCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveNodeCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/tx/CommitCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/tx/OptimisticPrepareCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/tx/PrepareCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/tx/RollbackCommand.java
core/trunk/src/main/java/org/jboss/cache/marshall/AbstractMarshaller.java
Log:
Removed unused interface
Added abstract class for tx commands
Modified: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/MoveCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/MoveCommand.java 2008-04-14 20:55:04 UTC (rev 5562)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/MoveCommand.java 2008-04-14 21:07:25 UTC (rev 5563)
@@ -16,7 +16,7 @@
* @author Mircea.Markus(a)jboss.com
* @since 2.2
*/
-public class MoveCommand extends BaseCacheDataCommand implements TxCacheCommand, UpdateDataCommand
+public class MoveCommand extends BaseCacheDataCommand implements TxCacheCommand
{
public static final int METHOD_ID = 36;
Modified: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutDataMapCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutDataMapCommand.java 2008-04-14 20:55:04 UTC (rev 5562)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutDataMapCommand.java 2008-04-14 21:07:25 UTC (rev 5563)
@@ -21,7 +21,7 @@
* @author Mircea.Markus(a)jboss.com
* @since 2.2
*/
-public class PutDataMapCommand extends BaseDataVersionCommand implements TxCacheCommand, GlobalTransactionCommand, UpdateDataCommand
+public class PutDataMapCommand extends BaseDataVersionCommand implements TxCacheCommand, GlobalTransactionCommand
{
public static final int METHOD_ID = 1;
public static final int ERASE_METHOD_ID = 2;
Modified: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutKeyValueCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutKeyValueCommand.java 2008-04-14 20:55:04 UTC (rev 5562)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutKeyValueCommand.java 2008-04-14 21:07:25 UTC (rev 5563)
@@ -22,7 +22,7 @@
* @author Mircea.Markus(a)jboss.com
* @since 2.2
*/
-public class PutKeyValueCommand extends BaseDataVersionCommand implements TxCacheCommand, GlobalTransactionCommand, UpdateDataCommand
+public class PutKeyValueCommand extends BaseDataVersionCommand implements TxCacheCommand, GlobalTransactionCommand
{
public static final int METHOD_ID = 3;
public static final int VERSIONED_METHOD_ID = 39;
Modified: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveDataCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveDataCommand.java 2008-04-14 20:55:04 UTC (rev 5562)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveDataCommand.java 2008-04-14 21:07:25 UTC (rev 5563)
@@ -22,7 +22,7 @@
* @author Mircea.Markus(a)jboss.com
* @since 2.2
*/
-public class RemoveDataCommand extends BaseDataVersionCommand implements TxCacheCommand, GlobalTransactionCommand, UpdateDataCommand
+public class RemoveDataCommand extends BaseDataVersionCommand implements TxCacheCommand, GlobalTransactionCommand
{
public static final int METHOD_ID = 7;
public static final int VERSIONED_METHOD_ID = 42;
Modified: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveKeyCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveKeyCommand.java 2008-04-14 20:55:04 UTC (rev 5562)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveKeyCommand.java 2008-04-14 21:07:25 UTC (rev 5563)
@@ -22,7 +22,7 @@
* @author Mircea.Markus(a)jboss.com
* @since 2.2
*/
-public class RemoveKeyCommand extends BaseDataVersionCommand implements TxCacheCommand, GlobalTransactionCommand, UpdateDataCommand
+public class RemoveKeyCommand extends BaseDataVersionCommand implements TxCacheCommand, GlobalTransactionCommand
{
public static final int METHOD_ID = 6;
public static final int VERSIONED_METHOD_ID = 41;
Modified: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveNodeCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveNodeCommand.java 2008-04-14 20:55:04 UTC (rev 5562)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveNodeCommand.java 2008-04-14 21:07:25 UTC (rev 5563)
@@ -19,7 +19,7 @@
* @author Mircea.Markus(a)jboss.com
* @since 2.2
*/
-public class RemoveNodeCommand extends BaseDataVersionCommand implements TxCacheCommand, GlobalTransactionCommand, UpdateDataCommand
+public class RemoveNodeCommand extends BaseDataVersionCommand implements TxCacheCommand, GlobalTransactionCommand
{
public static final int METHOD_ID = 5;
public static final int VERSIONED_METHOD_ID = 40;
Deleted: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/UpdateDataCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/UpdateDataCommand.java 2008-04-14 20:55:04 UTC (rev 5562)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/UpdateDataCommand.java 2008-04-14 21:07:25 UTC (rev 5563)
@@ -1,17 +0,0 @@
-package org.jboss.cache.commands.cachedata;
-
-import org.jboss.cache.Fqn;
-
-/**
- * Interface that depicts that this command somehow updates data
- *
- * @author Manik Surtani (<a href="mailto:manik@jboss.org">manik(a)jboss.org</a>)
- * @since 2.2.0
- */
-public interface UpdateDataCommand
-{
- /**
- * @return Fqn of the node being updated
- */
- Fqn getFqn();
-}
Added: core/trunk/src/main/java/org/jboss/cache/commands/tx/BaseGlobalTransactionCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/tx/BaseGlobalTransactionCommand.java (rev 0)
+++ core/trunk/src/main/java/org/jboss/cache/commands/tx/BaseGlobalTransactionCommand.java 2008-04-14 21:07:25 UTC (rev 5563)
@@ -0,0 +1,67 @@
+package org.jboss.cache.commands.tx;
+
+import org.jboss.cache.InvocationContext;
+import org.jboss.cache.commands.BaseCommand;
+import org.jboss.cache.commands.state.GlobalTransactionCommand;
+import org.jboss.cache.transaction.GlobalTransaction;
+
+/**
+ * Base class for transaction boundary commands that deal with global transactions
+ *
+ * @author Manik Surtani (<a href="mailto:manik@jboss.org">manik(a)jboss.org</a>)
+ * @since 2.2.0
+ */
+public abstract class BaseGlobalTransactionCommand extends BaseCommand implements GlobalTransactionCommand
+{
+ protected GlobalTransaction globalTransaction;
+
+ /**
+ * Default implementation which is a no-op.
+ *
+ * @return null
+ */
+ public Object perform(InvocationContext ctx)
+ {
+ return null;
+ }
+
+ public GlobalTransaction getGlobalTransaction()
+ {
+ return globalTransaction;
+ }
+
+ public void setGlobalTransaction(GlobalTransaction gtx)
+ {
+ this.globalTransaction = gtx;
+ }
+
+ public Object[] getParameters()
+ {
+ return new Object[]{globalTransaction};
+ }
+
+ public void setState(int commandId, Object[] args)
+ {
+ globalTransaction = (GlobalTransaction) args[0];
+ }
+
+ @Override
+ public boolean equals(Object o)
+ {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ BaseGlobalTransactionCommand that = (BaseGlobalTransactionCommand) o;
+
+ if (globalTransaction != null ? !globalTransaction.equals(that.globalTransaction) : that.globalTransaction != null)
+ return false;
+
+ return true;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return (globalTransaction != null ? globalTransaction.hashCode() : 0);
+ }
+}
Modified: core/trunk/src/main/java/org/jboss/cache/commands/tx/CommitCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/tx/CommitCommand.java 2008-04-14 20:55:04 UTC (rev 5562)
+++ core/trunk/src/main/java/org/jboss/cache/commands/tx/CommitCommand.java 2008-04-14 21:07:25 UTC (rev 5563)
@@ -1,21 +1,17 @@
package org.jboss.cache.commands.tx;
import org.jboss.cache.InvocationContext;
-import org.jboss.cache.commands.BaseCommand;
import org.jboss.cache.commands.CommandsVisitor;
-import org.jboss.cache.commands.state.GlobalTransactionCommand;
import org.jboss.cache.transaction.GlobalTransaction;
/**
* @author Mircea.Markus(a)jboss.com
* @since 2.2
*/
-public class CommitCommand extends BaseCommand implements GlobalTransactionCommand
+public class CommitCommand extends BaseGlobalTransactionCommand
{
public static final int METHOD_ID = 11;
- private GlobalTransaction globalTransaction;
-
public CommitCommand()
{
}
@@ -25,39 +21,13 @@
this.globalTransaction = globalTransaction;
}
- public Object perform(InvocationContext ctx)
- {
- //no op
- return null;
- }
-
public Object accept(InvocationContext ctx, CommandsVisitor handler) throws Throwable
{
return handler.handleCommitCommand(ctx, this);
}
- public GlobalTransaction getGlobalTransaction()
- {
- return globalTransaction;
- }
-
- public void setGlobalTransaction(GlobalTransaction gtx)
- {
- this.globalTransaction = gtx;
- }
-
public int getCommandId()
{
return METHOD_ID;
}
-
- public Object[] getParameters()
- {
- return new Object[]{globalTransaction};
- }
-
- public void setState(int commandId, Object[] args)
- {
- globalTransaction = (GlobalTransaction) args[0];
- }
}
Modified: core/trunk/src/main/java/org/jboss/cache/commands/tx/OptimisticPrepareCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/tx/OptimisticPrepareCommand.java 2008-04-14 20:55:04 UTC (rev 5562)
+++ core/trunk/src/main/java/org/jboss/cache/commands/tx/OptimisticPrepareCommand.java 2008-04-14 21:07:25 UTC (rev 5563)
@@ -28,11 +28,6 @@
this.data = data;
}
- public Object perform(InvocationContext ctx)
- {
- return null;
- }
-
public Object accept(InvocationContext ctx, CommandsVisitor handler) throws Throwable
{
return handler.handleOptimisticPrepareCommand(ctx, this);
@@ -56,6 +51,7 @@
}
@Override
+ @SuppressWarnings("unchecked")
public void setState(int commandId, Object[] args)
{
globalTransaction = (GlobalTransaction) args[0];
@@ -65,4 +61,25 @@
onePhaseCommit = (Boolean) args[4];
}
+ @Override
+ public boolean equals(Object o)
+ {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ if (!super.equals(o)) return false;
+
+ OptimisticPrepareCommand that = (OptimisticPrepareCommand) o;
+
+ if (data != null ? !data.equals(that.data) : that.data != null) return false;
+
+ return true;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ int result = super.hashCode();
+ result = 31 * result + (data != null ? data.hashCode() : 0);
+ return result;
+ }
}
Modified: core/trunk/src/main/java/org/jboss/cache/commands/tx/PrepareCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/tx/PrepareCommand.java 2008-04-14 20:55:04 UTC (rev 5562)
+++ core/trunk/src/main/java/org/jboss/cache/commands/tx/PrepareCommand.java 2008-04-14 21:07:25 UTC (rev 5563)
@@ -1,10 +1,8 @@
package org.jboss.cache.commands.tx;
import org.jboss.cache.InvocationContext;
-import org.jboss.cache.commands.BaseCommand;
import org.jboss.cache.commands.CacheCommand;
import org.jboss.cache.commands.CommandsVisitor;
-import org.jboss.cache.commands.state.GlobalTransactionCommand;
import org.jboss.cache.transaction.GlobalTransaction;
import org.jgroups.Address;
@@ -16,11 +14,10 @@
* @author Mircea.Markus(a)jboss.com
* @since 2.2
*/
-public class PrepareCommand extends BaseCommand implements CacheCommand, GlobalTransactionCommand
+public class PrepareCommand extends BaseGlobalTransactionCommand
{
public static final int METHOD_ID = 10;
- protected GlobalTransaction globalTransaction;
protected List<? extends CacheCommand> modifications;
protected Address localAddress;
protected boolean onePhaseCommit;
@@ -42,21 +39,6 @@
return handler.handlePrepareCommand(ctx, this);
}
- public Object perform(InvocationContext ctx)
- {
- return null;
- }
-
- public GlobalTransaction getGlobalTransaction()
- {
- return globalTransaction;
- }
-
- public void setGlobalTransaction(GlobalTransaction gtx)
- {
- this.globalTransaction = gtx;
- }
-
public List<? extends CacheCommand> getModifications()
{
return modifications;
@@ -87,11 +69,14 @@
return METHOD_ID;
}
+ @Override
public Object[] getParameters()
{
return new Object[]{globalTransaction, modifications, localAddress, onePhaseCommit};
}
+ @Override
+ @SuppressWarnings("unchecked")
public void setState(int commandId, Object[] args)
{
globalTransaction = (GlobalTransaction) args[0];
@@ -99,4 +84,30 @@
localAddress = (Address) args[2];
onePhaseCommit = (Boolean) args[3];
}
+
+ @Override
+ public boolean equals(Object o)
+ {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ if (!super.equals(o)) return false;
+
+ PrepareCommand that = (PrepareCommand) o;
+
+ if (onePhaseCommit != that.onePhaseCommit) return false;
+ if (localAddress != null ? !localAddress.equals(that.localAddress) : that.localAddress != null) return false;
+ if (modifications != null ? !modifications.equals(that.modifications) : that.modifications != null) return false;
+
+ return true;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ int result = super.hashCode();
+ result = 31 * result + (modifications != null ? modifications.hashCode() : 0);
+ result = 31 * result + (localAddress != null ? localAddress.hashCode() : 0);
+ result = 31 * result + (onePhaseCommit ? 1 : 0);
+ return result;
+ }
}
Modified: core/trunk/src/main/java/org/jboss/cache/commands/tx/RollbackCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/tx/RollbackCommand.java 2008-04-14 20:55:04 UTC (rev 5562)
+++ core/trunk/src/main/java/org/jboss/cache/commands/tx/RollbackCommand.java 2008-04-14 21:07:25 UTC (rev 5563)
@@ -1,22 +1,17 @@
package org.jboss.cache.commands.tx;
import org.jboss.cache.InvocationContext;
-import org.jboss.cache.commands.BaseCommand;
-import org.jboss.cache.commands.CacheCommand;
import org.jboss.cache.commands.CommandsVisitor;
-import org.jboss.cache.commands.state.GlobalTransactionCommand;
import org.jboss.cache.transaction.GlobalTransaction;
/**
* @author Mircea.Markus(a)jboss.com
* @since 2.2
*/
-public class RollbackCommand extends BaseCommand implements CacheCommand, GlobalTransactionCommand
+public class RollbackCommand extends BaseGlobalTransactionCommand
{
public static final int METHOD_ID = 12;
- private GlobalTransaction globalTransaction;
-
public RollbackCommand()
{
}
@@ -26,38 +21,13 @@
this.globalTransaction = globalTransaction;
}
- public Object perform(InvocationContext ctx)
- {
- return null;
- }
-
public Object accept(InvocationContext ctx, CommandsVisitor handler) throws Throwable
{
return handler.handleRollbackCommand(ctx, this);
}
- public GlobalTransaction getGlobalTransaction()
- {
- return globalTransaction;
- }
-
- public void setGlobalTransaction(GlobalTransaction gtx)
- {
- this.globalTransaction = gtx;
- }
-
public int getCommandId()
{
return METHOD_ID;
}
-
- public Object[] getParameters()
- {
- return new Object[]{globalTransaction};
- }
-
- public void setState(int commandId, Object[] args)
- {
- globalTransaction = (GlobalTransaction) args[0];
- }
}
Deleted: core/trunk/src/main/java/org/jboss/cache/interceptors/UnlockInterceptor.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/interceptors/UnlockInterceptor.java 2008-04-14 20:55:04 UTC (rev 5562)
+++ core/trunk/src/main/java/org/jboss/cache/interceptors/UnlockInterceptor.java 2008-04-14 21:07:25 UTC (rev 5563)
@@ -1,78 +0,0 @@
-package org.jboss.cache.interceptors;
-
-import org.jboss.cache.InvocationContext;
-import org.jboss.cache.transaction.TxUtil;
-import org.jboss.cache.factories.annotations.ComponentName;
-import org.jboss.cache.factories.annotations.Inject;
-import org.jboss.cache.lock.NodeLock;
-
-import javax.transaction.Transaction;
-import java.util.List;
-import java.util.Map;
-
-/**
- * When a call returns, unlocks all locks held by the current thread in the
- * LockTable. This is a no-op if a transaction is used.
- *
- * @author Bela Ban
- * @version $Id$
- */
-@Deprecated
-public class UnlockInterceptor extends Interceptor
-{
- Map<Thread, List<NodeLock>> lockTable = null;
-
- @Inject
- private void injectDependencies(@ComponentName("LockTable")Map<Thread, List<NodeLock>> lockTable)
-// private void init(@ComponentName("LockTable")ThreadLocal<List<NodeLock>> lockTable)
- {
- this.lockTable = lockTable;
- }
-
- public Object invoke(InvocationContext ctx) throws Throwable
- {
- try
- {
- return nextInterceptor(ctx);
- }
- catch (Throwable th)
- {
- throw th;
- }
- finally
- {
- if (ctx.getOptionOverrides() == null || !ctx.getOptionOverrides().isSuppressLocking())
- {
- Transaction tx = ctx.getTransaction();
- if (tx != null && TxUtil.isValid(tx))
- {
- // if (trace) log.trace("Do not do anything; we have a transaction running or node locking is optimistic.");
- }
- else
- { // no TX
- Thread currentThread = Thread.currentThread();
- List<NodeLock> locks = lockTable.get(currentThread);
- if (trace) log.trace("Attempting to release locks on current thread. Lock table is " + lockTable);
-
- if (locks != null && locks.size() > 0)
- {
- releaseLocks(locks, currentThread);
- lockTable.remove(currentThread);
- }
- }
- }
- }
- }
-
- private void releaseLocks(List<NodeLock> locks, Thread currentThread)
- {
- NodeLock[] locksArray = locks.toArray(new NodeLock[]{});
- for (int i = locksArray.length - 1; i > -1; i--)
- {
- if (trace) log.trace("releasing lock for " + locksArray[i].getFqn() + ": " + locksArray[i]);
- locksArray[i].release(currentThread);
- }
- }
-
-
-}
Modified: core/trunk/src/main/java/org/jboss/cache/marshall/AbstractMarshaller.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/marshall/AbstractMarshaller.java 2008-04-14 20:55:04 UTC (rev 5562)
+++ core/trunk/src/main/java/org/jboss/cache/marshall/AbstractMarshaller.java 2008-04-14 21:07:25 UTC (rev 5563)
@@ -20,7 +20,6 @@
import org.jboss.cache.commands.cachedata.GetKeyValueCommand;
import org.jboss.cache.commands.cachedata.GetKeysCommand;
import org.jboss.cache.commands.cachedata.InvalidateCommand;
-import org.jboss.cache.commands.cachedata.UpdateDataCommand;
import org.jboss.cache.commands.functional.MarshallableCommand;
import org.jboss.cache.commands.remote.AnnounceBuddyPoolNameCommand;
import org.jboss.cache.commands.remote.AssignToBuddyGroupCommand;
@@ -179,9 +178,9 @@
fqn = ((ClusteredGetCommand) cmd).getCacheDataComand().getFqn();
break;
default:
- if (cmd instanceof UpdateDataCommand)
+ if (cmd instanceof CacheDataCommand)
{
- fqn = ((UpdateDataCommand) cmd).getFqn();
+ fqn = ((CacheDataCommand) cmd).getFqn();
}
else
{
16 years, 2 months