Bump odlparent to 3.1.2
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / databroker / ClientBackedTransactionChain.java
index db30372676c43057749ae11d157901eaa77978d3..4168fc9acd835ca09034a47389719697fda5cedc 100644 (file)
@@ -15,11 +15,11 @@ import org.opendaylight.controller.cluster.databroker.actors.dds.AbstractClientH
 import org.opendaylight.controller.cluster.databroker.actors.dds.ClientLocalHistory;
 import org.opendaylight.controller.cluster.databroker.actors.dds.ClientSnapshot;
 import org.opendaylight.controller.cluster.databroker.actors.dds.ClientTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionChainClosedException;
-import org.opendaylight.controller.sal.core.spi.data.DOMStoreReadTransaction;
-import org.opendaylight.controller.sal.core.spi.data.DOMStoreReadWriteTransaction;
-import org.opendaylight.controller.sal.core.spi.data.DOMStoreTransactionChain;
-import org.opendaylight.controller.sal.core.spi.data.DOMStoreWriteTransaction;
+import org.opendaylight.mdsal.common.api.TransactionChainClosedException;
+import org.opendaylight.mdsal.dom.spi.store.DOMStoreReadTransaction;
+import org.opendaylight.mdsal.dom.spi.store.DOMStoreReadWriteTransaction;
+import org.opendaylight.mdsal.dom.spi.store.DOMStoreTransactionChain;
+import org.opendaylight.mdsal.dom.spi.store.DOMStoreWriteTransaction;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -35,24 +35,26 @@ final class ClientBackedTransactionChain implements DOMStoreTransactionChain {
     private final Map<AbstractClientHandle<?>, Boolean> openSnapshots = new WeakHashMap<>();
 
     private final ClientLocalHistory history;
+    private final boolean debugAllocation;
 
-    ClientBackedTransactionChain(final ClientLocalHistory history) {
+    ClientBackedTransactionChain(final ClientLocalHistory history, final boolean debugAllocation) {
         this.history = Preconditions.checkNotNull(history);
+        this.debugAllocation = debugAllocation;
     }
 
     @Override
     public DOMStoreReadTransaction newReadOnlyTransaction() {
-        return new ClientBackedReadTransaction(createSnapshot(), this);
+        return new ClientBackedReadTransaction(createSnapshot(), this, allocationContext());
     }
 
     @Override
     public DOMStoreReadWriteTransaction newReadWriteTransaction() {
-        return new ClientBackedReadWriteTransaction(createTransaction());
+        return new ClientBackedReadWriteTransaction(createTransaction(), allocationContext());
     }
 
     @Override
     public DOMStoreWriteTransaction newWriteOnlyTransaction() {
-        return new ClientBackedWriteTransaction(createTransaction());
+        return new ClientBackedWriteTransaction(createTransaction(), allocationContext());
     }
 
     @Override
@@ -86,6 +88,10 @@ final class ClientBackedTransactionChain implements DOMStoreTransactionChain {
         }
     }
 
+    private Throwable allocationContext() {
+        return debugAllocation ? new Throwable("allocated at") : null;
+    }
+
     private synchronized <T extends AbstractClientHandle<?>> T recordSnapshot(final T snapshot) {
         openSnapshots.put(snapshot, Boolean.TRUE);
         return snapshot;