[infinispan-commits] Infinispan SVN: r270 - in trunk/core/src/main/java/org/infinispan: transaction/xa and 1 other directory.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Wed May 13 01:37:40 EDT 2009


Author: mircea.markus
Date: 2009-05-13 01:37:40 -0400 (Wed, 13 May 2009)
New Revision: 270

Modified:
   trunk/core/src/main/java/org/infinispan/interceptors/TxInterceptor.java
   trunk/core/src/main/java/org/infinispan/transaction/xa/TransactionTable.java
Log:
perf optimization: don't obtain the context from the ICC but pass it as an argument

Modified: trunk/core/src/main/java/org/infinispan/interceptors/TxInterceptor.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/interceptors/TxInterceptor.java	2009-05-13 05:36:41 UTC (rev 269)
+++ trunk/core/src/main/java/org/infinispan/interceptors/TxInterceptor.java	2009-05-13 05:37:40 UTC (rev 270)
@@ -160,7 +160,7 @@
 
    private Object enlistReadAndInvokeNext(InvocationContext ctx, VisitableCommand command) throws Throwable {
       if (shouldEnlist(ctx)) {
-         TransactionXaAdapter xaAdapter = enlist();
+         TransactionXaAdapter xaAdapter = enlist(ctx);
          LocalTxInvocationContext localTxContext = (LocalTxInvocationContext) ctx;
          localTxContext.setXaCache(xaAdapter);
       }
@@ -169,7 +169,7 @@
 
    private Object enlistWriteAndInvokeNext(InvocationContext ctx, WriteCommand command) throws Throwable {
       if (shouldEnlist(ctx)) {
-         TransactionXaAdapter xaAdapter = enlist();
+         TransactionXaAdapter xaAdapter = enlist(ctx);
          LocalTxInvocationContext localTxContext = (LocalTxInvocationContext) ctx;
          if (!isLocalModeForced(ctx)) {
             xaAdapter.addModification(command);
@@ -181,13 +181,13 @@
       return invokeNextInterceptor(ctx, command);
    }
 
-   public TransactionXaAdapter enlist() throws SystemException, RollbackException {
+   public TransactionXaAdapter enlist(InvocationContext ctx) throws SystemException, RollbackException {
       Transaction transaction = tm.getTransaction();
       if (transaction == null) throw new IllegalStateException("This should only be called in an tx scope");
       int status = transaction.getStatus();
       if (!isValid(status)) throw new IllegalStateException("Transaction " + transaction +
             " is not in a valid state to be invoking cache operations on.");
-      return txTable.getOrCreateXaAdapter(transaction);
+      return txTable.getOrCreateXaAdapter(transaction, ctx);
    }
 
    private boolean isValid(int status) {

Modified: trunk/core/src/main/java/org/infinispan/transaction/xa/TransactionTable.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/transaction/xa/TransactionTable.java	2009-05-13 05:36:41 UTC (rev 269)
+++ trunk/core/src/main/java/org/infinispan/transaction/xa/TransactionTable.java	2009-05-13 05:37:40 UTC (rev 270)
@@ -4,6 +4,7 @@
 import org.infinispan.commands.CommandsFactory;
 import org.infinispan.commands.write.WriteCommand;
 import org.infinispan.config.Configuration;
+import org.infinispan.context.InvocationContext;
 import org.infinispan.context.InvocationContextContainer;
 import org.infinispan.factories.annotations.Inject;
 import org.infinispan.interceptors.InterceptorChain;
@@ -68,7 +69,7 @@
       return remoteTransaction;
    }
 
-   public TransactionXaAdapter getOrCreateXaAdapter(Transaction transaction) {
+   public TransactionXaAdapter getOrCreateXaAdapter(Transaction transaction, InvocationContext ctx) {
       TransactionXaAdapter current = localTransactions.get(transaction);
       if (current == null) {
          Address localAddress = rpcManager != null ? rpcManager.getLocalAddress() : null;
@@ -81,7 +82,7 @@
             log.error("Failed to emlist TransactionXaAdapter to transaction");
             throw new CacheException(e);
          }
-         notifier.notifyTransactionRegistered(tx, icc.getThreadContext());
+         notifier.notifyTransactionRegistered(tx, ctx);
       }
       return current;
    }




More information about the infinispan-commits mailing list