Bug 3376: Add debug context for CDS transactions
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / datastore / TransactionProxy.java
index 82258b46a44b237748342b9d43e8373cb04c0dde..e7a00042e4146c5ddc03a013e6eeda3198a38ea3 100644 (file)
@@ -62,7 +62,8 @@ public class TransactionProxy extends AbstractDOMStoreTransaction<TransactionIde
 
     @VisibleForTesting
     public TransactionProxy(final AbstractTransactionContextFactory<?> txContextFactory, final TransactionType type) {
-        super(txContextFactory.nextIdentifier(), false);
+        super(txContextFactory.nextIdentifier(), txContextFactory.getActorContext().getDatastoreContext()
+                .isTransactionDebugContextEnabled());
         this.txContextFactory = txContextFactory;
         this.type = Preconditions.checkNotNull(type);
 
@@ -244,7 +245,6 @@ public class TransactionProxy extends AbstractDOMStoreTransaction<TransactionIde
         final AbstractThreePhaseCommitCohort<?> ret;
         switch (txContextAdapters.size()) {
         case 0:
-            TransactionRateLimitingCallback.adjustRateLimitForUnusedTransaction(txContextFactory.getActorContext());
             ret = NoOpDOMStoreThreePhaseCommitCohort.INSTANCE;
             break;
         case 1:
@@ -256,7 +256,9 @@ public class TransactionProxy extends AbstractDOMStoreTransaction<TransactionIde
         }
 
         txContextFactory.onTransactionReady(getIdentifier(), ret.getCohortFutures());
-        return ret;
+
+        final Throwable debugContext = getDebugContext();
+        return debugContext == null ? ret : new DebugThreePhaseCommitCohort(getIdentifier(), ret, debugContext);
     }
 
     private AbstractThreePhaseCommitCohort<?> createSingleCommitCohort(final String shardName,