[infinispan-commits] Infinispan SVN: r330 - in trunk/core/src/main/java/org/infinispan: commands and 2 other directories.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Wed May 20 17:01:53 EDT 2009


Author: vblagojevic at jboss.com
Date: 2009-05-20 17:01:52 -0400 (Wed, 20 May 2009)
New Revision: 330

Modified:
   trunk/core/src/main/java/org/infinispan/AdvancedCache.java
   trunk/core/src/main/java/org/infinispan/commands/AbstractVisitor.java
   trunk/core/src/main/java/org/infinispan/commands/LockControlCommand.java
   trunk/core/src/main/java/org/infinispan/commands/Visitor.java
   trunk/core/src/main/java/org/infinispan/interceptors/CallInterceptor.java
   trunk/core/src/main/java/org/infinispan/interceptors/DistributionInterceptor.java
   trunk/core/src/main/java/org/infinispan/interceptors/LockingInterceptor.java
   trunk/core/src/main/java/org/infinispan/interceptors/ReplicationInterceptor.java
   trunk/core/src/main/java/org/infinispan/interceptors/TxInterceptor.java
   trunk/core/src/main/java/org/infinispan/interceptors/base/BaseRpcInterceptor.java
Log:
[ISPN-48] -  Introduce lock() and unlock() API methods
cleanup
javadoc

Modified: trunk/core/src/main/java/org/infinispan/AdvancedCache.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/AdvancedCache.java	2009-05-20 15:39:16 UTC (rev 329)
+++ trunk/core/src/main/java/org/infinispan/AdvancedCache.java	2009-05-20 21:01:52 UTC (rev 330)
@@ -83,8 +83,23 @@
    ComponentRegistry getComponentRegistry();
 
 
+   /**
+    * Locks a given key eagerly across cache nodes in a cluster.
+    * <p>
+    * A key can be locked eagerly in the context of a transaction only
+    *
+    * @param key the key to lock
+    */
    void lock(K key);
 
+   /**
+    * Locks collections of keys eagerly across cache nodes in a cluster.
+    * <p>
+    * Collections of keys can be locked eagerly in the context of a transaction only
+    * 
+    * 
+    * @param key the key to lock
+    */
    void lock(Collection<? extends K> keys);
 
    RpcManager getRpcManager();

Modified: trunk/core/src/main/java/org/infinispan/commands/AbstractVisitor.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/AbstractVisitor.java	2009-05-20 15:39:16 UTC (rev 329)
+++ trunk/core/src/main/java/org/infinispan/commands/AbstractVisitor.java	2009-05-20 21:01:52 UTC (rev 330)
@@ -126,7 +126,7 @@
       }
    }
    
-   public Object visitLockControlCommand(InvocationContext ctx, LockControlCommand command) throws Throwable{
+   public Object visitLockControlCommand(TxInvocationContext ctx, LockControlCommand command) throws Throwable{
       return handleDefault(ctx, command);
    }
 }
\ No newline at end of file

Modified: trunk/core/src/main/java/org/infinispan/commands/LockControlCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/LockControlCommand.java	2009-05-20 15:39:16 UTC (rev 329)
+++ trunk/core/src/main/java/org/infinispan/commands/LockControlCommand.java	2009-05-20 21:01:52 UTC (rev 330)
@@ -25,6 +25,7 @@
 import org.infinispan.commands.write.WriteCommand;
 import org.infinispan.context.InvocationContext;
 import org.infinispan.context.impl.RemoteTxInvocationContext;
+import org.infinispan.context.impl.TxInvocationContext;
 import org.infinispan.transaction.xa.GlobalTransaction;
 import org.infinispan.transaction.xa.RemoteTransaction;
 
@@ -54,6 +55,10 @@
    public Collection getKeys() {
       return keys;
    }
+   
+   public Object acceptVisitor(InvocationContext ctx, Visitor visitor) throws Throwable {
+      return visitor.visitLockControlCommand((TxInvocationContext) ctx, this);
+   }
 
    @Override
    public Object perform(InvocationContext ignored) throws Throwable {
@@ -72,10 +77,6 @@
       return invoker.invoke(ctxt, this);
    }
 
-   public Object acceptVisitor(InvocationContext ctx, Visitor visitor) throws Throwable {
-      return visitor.visitLockControlCommand(ctx, this);
-   }
-
    public byte getCommandId() {
       return COMMAND_ID;
    }

Modified: trunk/core/src/main/java/org/infinispan/commands/Visitor.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/Visitor.java	2009-05-20 15:39:16 UTC (rev 329)
+++ trunk/core/src/main/java/org/infinispan/commands/Visitor.java	2009-05-20 21:01:52 UTC (rev 330)
@@ -73,5 +73,5 @@
    Object visitInvalidateCommand(InvocationContext ctx, InvalidateCommand invalidateCommand) throws Throwable;
    
    // locking commands
-   Object visitLockControlCommand(InvocationContext ctx, LockControlCommand command) throws Throwable;
+   Object visitLockControlCommand(TxInvocationContext ctx, LockControlCommand command) throws Throwable;
 }
\ No newline at end of file

Modified: trunk/core/src/main/java/org/infinispan/interceptors/CallInterceptor.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/interceptors/CallInterceptor.java	2009-05-20 15:39:16 UTC (rev 329)
+++ trunk/core/src/main/java/org/infinispan/interceptors/CallInterceptor.java	2009-05-20 21:01:52 UTC (rev 330)
@@ -59,7 +59,7 @@
    }
    
    @Override
-   public Object visitLockControlCommand(InvocationContext ctx, LockControlCommand c) throws Throwable {
+   public Object visitLockControlCommand(TxInvocationContext ctx, LockControlCommand c) throws Throwable {
       if (trace) log.trace("Suppressing invocation of method handleLockControlCommand.");
       return null;
    }

Modified: trunk/core/src/main/java/org/infinispan/interceptors/DistributionInterceptor.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/interceptors/DistributionInterceptor.java	2009-05-20 15:39:16 UTC (rev 329)
+++ trunk/core/src/main/java/org/infinispan/interceptors/DistributionInterceptor.java	2009-05-20 21:01:52 UTC (rev 330)
@@ -1,6 +1,7 @@
 package org.infinispan.interceptors;
 
 import org.infinispan.commands.CommandsFactory;
+import org.infinispan.commands.LockControlCommand;
 import org.infinispan.commands.read.GetKeyValueCommand;
 import org.infinispan.commands.tx.CommitCommand;
 import org.infinispan.commands.tx.PrepareCommand;
@@ -165,6 +166,14 @@
       return handleWriteCommand(ctx, command,
                                 new SingleKeyRecipientGenerator(command.getKey()));
    }
+   
+   public Object visitLockControlCommand(TxInvocationContext ctx, LockControlCommand command) throws Throwable {
+      if (ctx.isOriginLocal()) {
+         List<Address> recipients = new ArrayList<Address>(ctx.getTransactionParticipants());
+         rpcManager.anycastRpcCommand(recipients, command, true, true);
+      }
+      return invokeNextInterceptor(ctx, command);
+   }
 
    // ---- TX boundard commands
    @Override

Modified: trunk/core/src/main/java/org/infinispan/interceptors/LockingInterceptor.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/interceptors/LockingInterceptor.java	2009-05-20 15:39:16 UTC (rev 329)
+++ trunk/core/src/main/java/org/infinispan/interceptors/LockingInterceptor.java	2009-05-20 21:01:52 UTC (rev 330)
@@ -137,7 +137,8 @@
    }
 
    @Override
-   public Object visitLockControlCommand(InvocationContext ctx, LockControlCommand c) throws Throwable {
+   public Object visitLockControlCommand(TxInvocationContext ctx, LockControlCommand c)
+            throws Throwable {
       try {
          if (ctx.isOriginLocal() && ctx.isInTxScope()) {
             c.attachGlobalTransaction((GlobalTransaction) ctx.getLockOwner());
@@ -147,7 +148,11 @@
          }
          return invokeNextInterceptor(ctx, c);
       } finally {
-         doAfterCall(ctx);
+         if (ctx.isInTxScope()) {
+            doAfterCall(ctx);
+         } else {
+            throw new IllegalStateException( "Attempting to lock but there is no transactional context in scope. " + ctx);
+         }
       }
    }
 

Modified: trunk/core/src/main/java/org/infinispan/interceptors/ReplicationInterceptor.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/interceptors/ReplicationInterceptor.java	2009-05-20 15:39:16 UTC (rev 329)
+++ trunk/core/src/main/java/org/infinispan/interceptors/ReplicationInterceptor.java	2009-05-20 21:01:52 UTC (rev 330)
@@ -66,16 +66,6 @@
    }
 
    @Override
-   public Object visitLockControlCommand(InvocationContext ctx, LockControlCommand command) throws Throwable {
-      Object retVal = invokeNextInterceptor(ctx, command);
-      if (ctx.isOriginLocal()) {
-         rpcManager.broadcastRpcCommand(command, true, false);
-      }
-      return retVal;
-   }
-
-
-   @Override
    public Object visitRollbackCommand(TxInvocationContext ctx, RollbackCommand command) throws Throwable {
       if (ctx.isOriginLocal() && !configuration.isOnePhaseCommit()) {
          rpcManager.broadcastRpcCommand(command, configuration.isSyncRollbackPhase(), true);

Modified: trunk/core/src/main/java/org/infinispan/interceptors/TxInterceptor.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/interceptors/TxInterceptor.java	2009-05-20 15:39:16 UTC (rev 329)
+++ trunk/core/src/main/java/org/infinispan/interceptors/TxInterceptor.java	2009-05-20 21:01:52 UTC (rev 330)
@@ -111,7 +111,7 @@
    }
 
    @Override
-   public Object visitLockControlCommand(InvocationContext ctx, LockControlCommand command) throws Throwable {
+   public Object visitLockControlCommand(TxInvocationContext ctx, LockControlCommand command) throws Throwable {
       return enlistReadAndInvokeNext(ctx, command);
    }
 

Modified: trunk/core/src/main/java/org/infinispan/interceptors/base/BaseRpcInterceptor.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/interceptors/base/BaseRpcInterceptor.java	2009-05-20 15:39:16 UTC (rev 329)
+++ trunk/core/src/main/java/org/infinispan/interceptors/base/BaseRpcInterceptor.java	2009-05-20 21:01:52 UTC (rev 330)
@@ -21,8 +21,10 @@
  */
 package org.infinispan.interceptors.base;
 
+import org.infinispan.commands.LockControlCommand;
 import org.infinispan.context.Flag;
 import org.infinispan.context.InvocationContext;
+import org.infinispan.context.impl.TxInvocationContext;
 import org.infinispan.factories.annotations.Inject;
 import org.infinispan.factories.annotations.Start;
 import org.infinispan.remoting.rpc.RpcManager;
@@ -49,7 +51,17 @@
    public void init() {
       defaultSynchronous = configuration.getCacheMode().isSynchronous();
    }
+   
+   @Override
+   public Object visitLockControlCommand(TxInvocationContext ctx, LockControlCommand command) throws Throwable {
+      Object retVal = invokeNextInterceptor(ctx, command);
+      if (ctx.isOriginLocal()) {
+         rpcManager.broadcastRpcCommand(command, true, false);
+      }
+      return retVal;
+   }
 
+
    protected final boolean isSynchronous(InvocationContext ctx) {
       if (ctx.hasFlag(Flag.FORCE_SYNCHRONOUS))
          return true;




More information about the infinispan-commits mailing list