[jbosscache-commits] JBoss Cache SVN: r5577 - in core/trunk/src/main/java/org/jboss/cache: commands/cachedata and 3 other directories.
jbosscache-commits at lists.jboss.org
jbosscache-commits at lists.jboss.org
Wed Apr 16 10:24:20 EDT 2008
Author: manik.surtani at jboss.com
Date: 2008-04-16 10:24:20 -0400 (Wed, 16 Apr 2008)
New Revision: 5577
Added:
core/trunk/src/main/java/org/jboss/cache/commands/remote/BaseDirectCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/remote/DirectCommand.java
Modified:
core/trunk/src/main/java/org/jboss/cache/commands/CommandsFactory.java
core/trunk/src/main/java/org/jboss/cache/commands/cachedata/GetKeyValueCommand.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/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/remote/AnnounceBuddyPoolNameCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/remote/AssignToBuddyGroupCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/remote/ClusteredGetCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/remote/DataGravitationCleanupCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/remote/GravitateDataCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/remote/RemoveFromBuddyGroupCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/remote/ReplicateCommand.java
core/trunk/src/main/java/org/jboss/cache/invocation/CacheInvocationDelegate.java
core/trunk/src/main/java/org/jboss/cache/invocation/InterceptorChain.java
core/trunk/src/main/java/org/jboss/cache/marshall/CommandAwareRpcDispatcher.java
Log:
Updated commands
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-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/CommandsFactory.java 2008-04-16 14:24:20 UTC (rev 5577)
@@ -384,14 +384,18 @@
case AnnounceBuddyPoolNameCommand.METHOD_ID:
returnValue = new AnnounceBuddyPoolNameCommand();
break;
-
case AssignToBuddyGroupCommand.METHOD_ID:
returnValue = new AssignToBuddyGroupCommand();
break;
-
case RemoveFromBuddyGroupCommand.METHOD_ID:
returnValue = new RemoveFromBuddyGroupCommand();
break;
+ case DataGravitationCleanupCommand.METHOD_ID:
+ returnValue = new DataGravitationCleanupCommand();
+ break;
+ case GravitateDataCommand.METHOD_ID:
+ returnValue = new GravitateDataCommand();
+ break;
default:
throw new CacheException("Unknown command id " + id + "!");
Modified: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/GetKeyValueCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/GetKeyValueCommand.java 2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/GetKeyValueCommand.java 2008-04-16 14:24:20 UTC (rev 5577)
@@ -32,7 +32,7 @@
public Object perform(InvocationContext ctx)
{
- if (log.isTraceEnabled())
+ if (trace)
{
log.trace(new StringBuffer("_get(").append("\"").append(fqn).append("\", \"").append(key).append("\", \"").
append(sendNodeEvent).append("\")"));
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-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/InvalidateCommand.java 2008-04-16 14:24:20 UTC (rev 5577)
@@ -59,7 +59,7 @@
//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);
+ if (trace) log.trace("Invalidating fqn:" + fqn);
if (node == null)
{
// if pessimistic locking, just return.
@@ -71,11 +71,11 @@
{
if (dataVersion == null)
{
- if (log.isTraceEnabled())
+ if (trace)
log.trace("Would have created a tombstone since the node doesn't exist, but the version to invalidate is null and hence cannot create a tombstone!");
return null;
}
- if (log.isTraceEnabled())
+ if (trace)
log.trace("Node doesn't exist; creating a tombstone with data version " + dataVersion);
// create the node we need.
Map m = Collections.emptyMap();
@@ -171,7 +171,7 @@
public String toString()
{
return "InvalidateCommand{" +
- "dataVersion=" + dataVersion+
+ "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-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutDataMapCommand.java 2008-04-16 14:24:20 UTC (rev 5577)
@@ -7,11 +7,9 @@
import org.jboss.cache.commands.functional.TxCacheCommand;
import org.jboss.cache.commands.state.BaseDataVersionCommand;
import org.jboss.cache.commands.state.GlobalTransactionCommand;
-import org.jboss.cache.factories.annotations.Inject;
import org.jboss.cache.notifications.event.NodeModifiedEvent;
import org.jboss.cache.optimistic.DataVersion;
import org.jboss.cache.transaction.GlobalTransaction;
-import org.jboss.cache.transaction.TransactionTable;
import java.util.Map;
@@ -52,7 +50,7 @@
public Object perform(InvocationContext ctx)
{
- if (log.isTraceEnabled())
+ if (trace)
{
log.trace("perform(" + globalTransaction + ", \"" + fqn + "\", " + data + " undo=" + createUndoOps + " erase=" + eraseContents + ")");
}
@@ -69,7 +67,7 @@
public void rollback()
{
- if (log.isTraceEnabled())
+ if (trace)
{
log.trace("rollback(" + globalTransaction + ", \"" + fqn + "\", " + data + ")");
}
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-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutKeyValueCommand.java 2008-04-16 14:24:20 UTC (rev 5577)
@@ -63,7 +63,7 @@
public Object perform(InvocationContext ctx)
{
- if (log.isTraceEnabled())
+ if (trace)
{
log.trace(new StringBuffer("perform(").append(globalTransaction).append(", \"").
append(fqn).append("\", k=").append(key).append(", v=").append(value).append(")"));
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-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveDataCommand.java 2008-04-16 14:24:20 UTC (rev 5577)
@@ -58,7 +58,7 @@
public Object perform(InvocationContext ctx)
{
- if (log.isTraceEnabled()) log.trace("perform(" + globalTransaction + ", \"" + fqn + "\")");
+ if (trace) log.trace("perform(" + globalTransaction + ", \"" + fqn + "\")");
NodeSPI targetNode = cacheData.findNode(fqn, dataVersion);
if (targetNode == null)
{
@@ -120,7 +120,7 @@
public void rollback()
{
- if (log.isTraceEnabled()) log.trace("rollback(" + globalTransaction + ", \"" + fqn + "\", " + originalData + ")");
+ if (trace) log.trace("rollback(" + globalTransaction + ", \"" + fqn + "\", " + originalData + ")");
boolean isRollback = true;
NodeSPI nodeSPI = cacheData.findNodeCheck(globalTransaction, fqn, isRollback);
nodeSPI.putAllDirect(originalData);
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-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveKeyCommand.java 2008-04-16 14:24:20 UTC (rev 5577)
@@ -56,7 +56,7 @@
public Object perform(InvocationContext ctx)
{
- if (log.isTraceEnabled()) log.trace("perform(" + globalTransaction + ", \"" + fqn + "\", key=" + key + ")");
+ if (trace) log.trace("perform(" + globalTransaction + ", \"" + fqn + "\", key=" + key + ")");
NodeSPI n = cacheData.findNode(fqn);
if (n == null)
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-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveNodeCommand.java 2008-04-16 14:24:20 UTC (rev 5577)
@@ -58,14 +58,14 @@
public Object perform(InvocationContext ctx)
{
NodeSPI parentNode;
- if (log.isTraceEnabled())
+ if (trace)
log.trace("perform(" + globalTransaction + ", \"" + fqn + "\", undo=" + createUndoOps + ")");
// Find the node. This will add the temporarily created parent nodes to the TX's node list if globalTransaction != null)
targetNode = cacheData.findNode(fqn, dataVersion, true);
if (targetNode == null)
{
- if (log.isTraceEnabled()) log.trace("node " + fqn + " not found");
+ if (trace) log.trace("node " + fqn + " not found");
return false;
}
@@ -135,7 +135,7 @@
public void rollback()
{
String childName = (String) targetNode.getFqn().getLastElement();
- if (log.isTraceEnabled())
+ if (trace)
{
log.trace("rollback(\"" + parentFqn + "\", \"" + childName + "\", node=" + targetNode + ")");
}
Modified: core/trunk/src/main/java/org/jboss/cache/commands/remote/AnnounceBuddyPoolNameCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/remote/AnnounceBuddyPoolNameCommand.java 2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/remote/AnnounceBuddyPoolNameCommand.java 2008-04-16 14:24:20 UTC (rev 5577)
@@ -4,8 +4,6 @@
import org.apache.commons.logging.LogFactory;
import org.jboss.cache.InvocationContext;
import org.jboss.cache.buddyreplication.BuddyManager;
-import org.jboss.cache.commands.BaseCommand;
-import org.jboss.cache.commands.CacheCommand;
import org.jboss.cache.commands.CommandsVisitor;
import org.jboss.cache.factories.annotations.Inject;
import org.jgroups.Address;
@@ -14,7 +12,7 @@
* @author Mircea.Markus at jboss.com
* @since 2.2
*/
-public class AnnounceBuddyPoolNameCommand extends BaseCommand implements CacheCommand
+public class AnnounceBuddyPoolNameCommand extends BaseDirectCommand
{
public static final int METHOD_ID = 28;
private static final Log log = LogFactory.getLog(AnnounceBuddyPoolNameCommand.class);
@@ -43,12 +41,13 @@
}
- public Object perform(InvocationContext ctx) throws Throwable
+ public Object performDirectly()
{
if (buddyManager != null)
buddyManager.handlePoolNameBroadcast(address, buddyPoolName);
else if (log.isWarnEnabled())
log.warn("Received annouceBuddyPoolName call from [" + address + "] but buddy replication is not enabled on this node!");
+
return null;
}
Modified: core/trunk/src/main/java/org/jboss/cache/commands/remote/AssignToBuddyGroupCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/remote/AssignToBuddyGroupCommand.java 2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/remote/AssignToBuddyGroupCommand.java 2008-04-16 14:24:20 UTC (rev 5577)
@@ -4,8 +4,6 @@
import org.jboss.cache.InvocationContext;
import org.jboss.cache.buddyreplication.BuddyGroup;
import org.jboss.cache.buddyreplication.BuddyManager;
-import org.jboss.cache.commands.BaseCommand;
-import org.jboss.cache.commands.CacheCommand;
import org.jboss.cache.commands.CommandsVisitor;
import org.jboss.cache.factories.annotations.Inject;
@@ -15,7 +13,7 @@
* @author Mircea.Markus at jboss.com
* @since 2.2
*/
-public class AssignToBuddyGroupCommand extends BaseCommand implements CacheCommand
+public class AssignToBuddyGroupCommand extends BaseDirectCommand
{
public static final int METHOD_ID = 29;
@@ -41,12 +39,13 @@
this.buddyManager = manager;
}
- public Object perform(InvocationContext ctx) throws Throwable
+ public Object performDirectly() throws Exception
{
if (buddyManager != null)
buddyManager.handleAssignToBuddyGroup(group, state);
else if (log.isWarnEnabled())
log.warn("Received assignToBuddyGroup call from group owner [" + group.getDataOwner() + "] but buddy replication is not enabled on this node!");
+
return null;
}
Added: core/trunk/src/main/java/org/jboss/cache/commands/remote/BaseDirectCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/remote/BaseDirectCommand.java (rev 0)
+++ core/trunk/src/main/java/org/jboss/cache/commands/remote/BaseDirectCommand.java 2008-04-16 14:24:20 UTC (rev 5577)
@@ -0,0 +1,18 @@
+package org.jboss.cache.commands.remote;
+
+import org.jboss.cache.InvocationContext;
+import org.jboss.cache.commands.BaseCommand;
+
+/**
+ * Base class that implements DirectCommand
+ *
+ * @author Manik Surtani (<a href="mailto:manik at jboss.org">manik at jboss.org</a>)
+ * @since 2.2.0
+ */
+public abstract class BaseDirectCommand extends BaseCommand implements DirectCommand
+{
+ public final Object perform(InvocationContext ctx)
+ {
+ throw new UnsupportedOperationException("Direct commands are not meant to be passed up the interceptor chain!");
+ }
+}
Modified: core/trunk/src/main/java/org/jboss/cache/commands/remote/ClusteredGetCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/remote/ClusteredGetCommand.java 2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/remote/ClusteredGetCommand.java 2008-04-16 14:24:20 UTC (rev 5577)
@@ -1,8 +1,6 @@
package org.jboss.cache.commands.remote;
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.cachedata.CacheDataCommand;
import org.jboss.cache.commands.cachedata.ExistsNodeCommand;
@@ -10,6 +8,7 @@
import org.jboss.cache.commands.cachedata.GetDataMapCommand;
import org.jboss.cache.factories.annotations.Inject;
import org.jboss.cache.invocation.CacheData;
+import org.jboss.cache.invocation.InterceptorChain;
import java.util.ArrayList;
import java.util.Collections;
@@ -19,13 +18,14 @@
* @author Mircea.Markus at jboss.com
* @since 2.2
*/
-public class ClusteredGetCommand extends BaseCommand implements CacheCommand
+public class ClusteredGetCommand extends BaseDirectCommand
{
public static final int METHOD_ID = 22;
private CacheDataCommand cacheDataComand;
private Boolean searchBackupSubtrees;
private CacheData cacheData;
+ private InterceptorChain interceptorChain;
public ClusteredGetCommand()
{
@@ -38,31 +38,30 @@
}
@Inject
- public void initialize(CacheData cacheData)
+ public void initialize(CacheData cacheData, InterceptorChain interceptorChain)
{
this.cacheData = cacheData;
+ this.interceptorChain = interceptorChain;
}
/**
* A 'clustered get' call, called from a remote ClusteredCacheLoader.
*
- * @param ctx
* @return a List containing 2 elements: (true or false) and a value (Object). If buddy replication
* is used one further element is added - an Fqn of the backup subtree in which this node may be found.
*/
- public Object perform(InvocationContext ctx) throws Throwable
+ public Object performDirectly() throws Throwable
{
- if (log.isTraceEnabled())
+ if (trace)
log.trace("Clustered Get called with params: " + cacheDataComand + ", " + searchBackupSubtrees);
Object callResults = null;
-
try
{
- if (log.isTraceEnabled()) log.trace("Clustered get: invoking call with Fqn " + cacheDataComand.getFqn());
- callResults = cacheDataComand.perform(ctx);
+ if (trace) log.trace("Clustered get: invoking call with Fqn " + cacheDataComand.getFqn());
+ callResults = interceptorChain.invoke(cacheDataComand, false);
boolean found = validResult(callResults);
- if (log.isTraceEnabled()) log.trace("Got result " + callResults + ", found=" + found);
+ if (trace) log.trace("Got result " + callResults + ", found=" + found);
if (found && callResults == null) callResults = createEmptyResults();
}
catch (Exception e)
@@ -82,7 +81,6 @@
results.add(null);
}
return results;
-
}
public Object accept(InvocationContext ctx, CommandsVisitor handler) throws Throwable
Modified: core/trunk/src/main/java/org/jboss/cache/commands/remote/DataGravitationCleanupCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/remote/DataGravitationCleanupCommand.java 2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/remote/DataGravitationCleanupCommand.java 2008-04-16 14:24:20 UTC (rev 5577)
@@ -27,7 +27,7 @@
* todo this calls other commands through the invocation chain, check wheter direct call is not okay
* todo it is not natural for this command to extend TxCC, revisit
*/
-public class DataGravitationCleanupCommand extends BaseCacheDataCommand implements TxCacheCommand, GlobalTransactionCommand
+public class DataGravitationCleanupCommand extends BaseCacheDataCommand implements TxCacheCommand, GlobalTransactionCommand, DirectCommand
{
public static final int METHOD_ID = 34;
@@ -64,17 +64,20 @@
public Object perform(InvocationContext invocationContext) throws Throwable
{
+ throw new UnsupportedOperationException("Direct commands are not meant to be passed up the interceptor chain!");
+ }
+
+ public Object performDirectly() throws Throwable
+ {
if (buddyManager.isDataGravitationRemoveOnFind())
{
- if (log.isTraceEnabled())
+ if (trace)
log.trace("DataGravitationCleanup: Removing primary (" + fqn + ") and backup (" + backup + ")");
- invocationContext.getOptionOverrides().setCacheModeLocal(true);
GlobalTransaction gtx = transactionHelper.getCurrentTransaction();
if (!executeRemove(gtx, fqn))
{
// only attempt to clean up the backup if the primary did not exist - a waste of a call otherwise.
- invocationContext.getOptionOverrides().setCacheModeLocal(true);
Object result = executeRemove(gtx, fqn);
if (wasNodeRemoved(result))
{
@@ -84,14 +87,14 @@
NodeSPI deadBackupRoot = cacheData.peek(backup.getParent(), false);
if (deadBackupRoot.getChildrenMapDirect().isEmpty())
{
- if (log.isTraceEnabled()) log.trace("Removing dead backup region " + deadBackupRoot.getFqn());
+ if (trace) log.trace("Removing dead backup region " + deadBackupRoot.getFqn());
executeRemove(gtx, deadBackupRoot.getFqn());
// now check the grand parent and see if we are free of versions
deadBackupRoot = cacheData.peek(deadBackupRoot.getFqn().getParent(), false);
if (deadBackupRoot.getChildrenMapDirect().isEmpty())
{
- if (log.isTraceEnabled()) log.trace("Removing dead backup region " + deadBackupRoot.getFqn());
+ if (trace) log.trace("Removing dead backup region " + deadBackupRoot.getFqn());
executeRemove(gtx, deadBackupRoot.getFqn());
}
}
@@ -101,7 +104,7 @@
}
else
{
- if (log.isTraceEnabled())
+ if (trace)
log.trace("DataGravitationCleanup: Evicting primary (" + fqn + ") and backup (" + backup + ")");
evictNode(fqn);
evictNode(backup);
@@ -116,7 +119,10 @@
{
Object result;
RemoveNodeCommand removeBackupCommand = commandsFactory.buildRemoveNodeCommand(gtx, toRemove, true, true, false);
- result = invoker.invoke(removeBackupCommand);
+
+ InvocationContext ctx = invoker.getInvocationContext();
+ ctx.getOptionOverrides().setCacheModeLocal(true);
+ result = invoker.invoke(ctx, removeBackupCommand);
return result != null && (Boolean) result;
}
Added: core/trunk/src/main/java/org/jboss/cache/commands/remote/DirectCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/remote/DirectCommand.java (rev 0)
+++ core/trunk/src/main/java/org/jboss/cache/commands/remote/DirectCommand.java 2008-04-16 14:24:20 UTC (rev 5577)
@@ -0,0 +1,20 @@
+package org.jboss.cache.commands.remote;
+
+import org.jboss.cache.commands.functional.MarshallableCommand;
+
+/**
+ * Commands implementing this interface will not be passed up the interceptor chain and instead will be executed directly.
+ *
+ * @author Manik Surtani (<a href="mailto:manik at jboss.org">manik at jboss.org</a>)
+ * @since 2.2.0
+ */
+public interface DirectCommand extends MarshallableCommand
+{
+ /**
+ * Performs this command directly, with no invocation context.
+ *
+ * @return an object if this call was to return values, otherwise null.
+ * @throws Throwable if something goes wrong
+ */
+ Object performDirectly() throws Throwable;
+}
Modified: core/trunk/src/main/java/org/jboss/cache/commands/remote/GravitateDataCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/remote/GravitateDataCommand.java 2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/remote/GravitateDataCommand.java 2008-04-16 14:24:20 UTC (rev 5577)
@@ -35,6 +35,10 @@
/* parametres */
private boolean searchSubtrees;
+ public GravitateDataCommand()
+ {
+ }
+
public GravitateDataCommand(Fqn fqn, boolean searchSubtrees)
{
this.fqn = fqn;
@@ -50,7 +54,7 @@
public Object perform(InvocationContext ctx)
{
// for now, perform a very simple series of getData calls.
- if (log.isTraceEnabled()) log.trace("Caller is asking for " + fqn);
+ if (trace) log.trace("Caller is asking for " + fqn);
try
{
ctx.setOriginLocal(false);
@@ -60,7 +64,7 @@
Node actualNode = spi.getNode(fqn);
ctx.getOptionOverrides().setSkipDataGravitation(false);
- if (log.isTraceEnabled()) log.trace("In local tree, this is " + actualNode);
+ if (trace) log.trace("In local tree, this is " + actualNode);
Fqn backupNodeFqn = null;
if (actualNode == null && searchSubtrees)
@@ -108,7 +112,7 @@
ctx.getOptionOverrides().setSkipDataGravitation(false);
}
- if (log.isTraceEnabled())
+ if (trace)
log.trace("Looking for " + backupNodeFqn + ". Search result: " + actualNode);
// break out of outer loop searching through all available backups.
@@ -139,7 +143,7 @@
}
catch (RuntimeException re)
{
- if (log.isTraceEnabled()) log.trace("Caught throwable", re);
+ if (trace) log.trace("Caught throwable", re);
throw re;
}
finally
Modified: core/trunk/src/main/java/org/jboss/cache/commands/remote/RemoveFromBuddyGroupCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/remote/RemoveFromBuddyGroupCommand.java 2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/remote/RemoveFromBuddyGroupCommand.java 2008-04-16 14:24:20 UTC (rev 5577)
@@ -2,8 +2,6 @@
import org.jboss.cache.InvocationContext;
import org.jboss.cache.buddyreplication.BuddyManager;
-import org.jboss.cache.commands.BaseCommand;
-import org.jboss.cache.commands.CacheCommand;
import org.jboss.cache.commands.CommandsVisitor;
import org.jboss.cache.factories.annotations.Inject;
@@ -11,7 +9,7 @@
* @author Mircea.Markus at jboss.com
* @since 2.2
*/
-public class RemoveFromBuddyGroupCommand extends BaseCommand implements CacheCommand
+public class RemoveFromBuddyGroupCommand extends BaseDirectCommand
{
public static final int METHOD_ID = 30;
@@ -34,7 +32,7 @@
this.buddyManager = buddyManager;
}
- public Object perform(InvocationContext ctx) throws Throwable
+ public Object performDirectly()
{
if (buddyManager != null)
buddyManager.handleRemoveFromBuddyGroup(groupName);
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-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/remote/ReplicateCommand.java 2008-04-16 14:24:20 UTC (rev 5577)
@@ -1,14 +1,12 @@
package org.jboss.cache.commands.remote;
-import org.jboss.cache.CacheSPI;
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.cachedata.PutKeyValueCommand;
import org.jboss.cache.commands.functional.MarshallableCommand;
import org.jboss.cache.factories.annotations.Inject;
-import org.jboss.cache.invocation.AbstractInvocationDelegate;
+import org.jboss.cache.invocation.InterceptorChain;
import java.util.List;
@@ -18,14 +16,12 @@
* @author Mircea.Markus at jboss.com
* @since 2.2
*/
-public class ReplicateCommand extends BaseCommand implements CacheCommand
+public class ReplicateCommand extends BaseDirectCommand
{
public static final int SINGLE_METHOD_ID = 13;
public static final int MULTIPLE_METHOD_ID = 14;
- //todo [mmarkus] extract the invoking oart from AbstractInvocationDelegate and make a new component that wraps that
- // logic together with InterceptorChain
- private AbstractInvocationDelegate invoker;
+ private InterceptorChain invoker;
/**
* optimisation - rather than constructing a new list each for scenarios where a single modification needs
@@ -56,12 +52,12 @@
}
@Inject
- public void initialize(CacheSPI invoker)
+ public void initialize(InterceptorChain interceptorChain)
{
- this.invoker = (AbstractInvocationDelegate) invoker;
+ this.invoker = interceptorChain;
}
- public Object perform(InvocationContext ctx) throws Throwable
+ public Object performDirectly() throws Throwable
{
if (isSingleCommand()) return processSingleCommand(singleModification);
for (MarshallableCommand command : modifications) processSingleCommand(command);
@@ -75,7 +71,8 @@
try
{
if (trace) log.trace("Invoking command " + cacheCommand + ", with originLocal flag set to false.");
- Object retVal = invoker.invoke(cacheCommand);
+
+ Object retVal = invoker.invoke(cacheCommand, false);
// we only need to return values for a set of remote calls; not every call.
if (returnValueForRemoteCall(cacheCommand))
{
Modified: core/trunk/src/main/java/org/jboss/cache/invocation/CacheInvocationDelegate.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/invocation/CacheInvocationDelegate.java 2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/invocation/CacheInvocationDelegate.java 2008-04-16 14:24:20 UTC (rev 5577)
@@ -4,10 +4,10 @@
import org.jboss.cache.buddyreplication.BuddyManager;
import org.jboss.cache.buddyreplication.GravitateResult;
import org.jboss.cache.commands.CommandsFactory;
-import org.jboss.cache.commands.remote.GravitateDataCommand;
import org.jboss.cache.commands.cachedata.*;
import org.jboss.cache.commands.channel.BlockChannelCommand;
import org.jboss.cache.commands.channel.UnblockChannelCommand;
+import org.jboss.cache.commands.remote.GravitateDataCommand;
import org.jboss.cache.config.Configuration;
import org.jboss.cache.config.Option;
import org.jboss.cache.factories.annotations.Inject;
@@ -245,7 +245,8 @@
public GravitateResult gravitateData(Fqn fqn, boolean searchBuddyBackupSubtrees, InvocationContext ctx)
{
GravitateDataCommand command = commandsFactory.buildGravitateDataCacheCommand(fqn, searchBuddyBackupSubtrees);
- return (GravitateResult) command.perform(null);
+ return (GravitateResult) invoke(command);
+// return (GravitateResult) command.perform(null);
}
public NodeSPI<K, V> peek(Fqn fqn, boolean includeDeletedNodes, boolean includeInvalidNodes)
Modified: core/trunk/src/main/java/org/jboss/cache/invocation/InterceptorChain.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/invocation/InterceptorChain.java 2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/invocation/InterceptorChain.java 2008-04-16 14:24:20 UTC (rev 5577)
@@ -257,4 +257,8 @@
return firstInChain;
}
+ public InvocationContext getInvocationContext()
+ {
+ return invocationContextContainer.get();
+ }
}
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-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/marshall/CommandAwareRpcDispatcher.java 2008-04-16 14:24:20 UTC (rev 5577)
@@ -1,7 +1,7 @@
package org.jboss.cache.marshall;
import org.jboss.cache.commands.CacheCommand;
-import org.jboss.cache.commands.remote.*;
+import org.jboss.cache.commands.remote.DirectCommand;
import org.jboss.cache.invocation.CacheInvocationDelegate;
import org.jgroups.Channel;
import org.jgroups.MembershipListener;
@@ -55,15 +55,16 @@
try
{
CacheCommand cmd = (CacheCommand) req_marshaller.objectFromByteBuffer(req.getBuffer());
+ if (trace) log.trace("[sender=" + req.getSrc() + "], command: " + cmd);
//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)
+ if (cmd instanceof DirectCommand)
{
- return cmd.perform(null);
+ if (trace) log.trace("This is a direct command - so performing directlty and not via the invoker.");
+ DirectCommand dCmd = (DirectCommand) cmd;
+ return dCmd.performDirectly();
}
- if (trace) log.trace("[sender=" + req.getSrc() + "], command: " + cmd);
return cid.invoke(cmd);
}
More information about the jbosscache-commits
mailing list