import org.opendaylight.controller.cluster.datastore.config.Configuration;
import org.opendaylight.controller.cluster.datastore.persisted.DatastoreSnapshot;
import org.opendaylight.controller.cluster.datastore.utils.ActorContext;
-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.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;
/**
* Implements a distributed DOMStore using ClientActor.
@Override
public DOMStoreTransactionChain createTransactionChain() {
- return new ClientBackedTransactionChain(getClient().createLocalHistory());
+ return new ClientBackedTransactionChain(getClient().createLocalHistory(), debugAllocation());
}
@Override
public DOMStoreReadTransaction newReadOnlyTransaction() {
- return new ClientBackedReadTransaction(getClient().createSnapshot(), null);
+ return new ClientBackedReadTransaction(getClient().createSnapshot(), null, allocationContext());
}
@Override
public DOMStoreWriteTransaction newWriteOnlyTransaction() {
- return new ClientBackedWriteTransaction(getClient().createTransaction());
+ return new ClientBackedWriteTransaction(getClient().createTransaction(), allocationContext());
}
@Override
public DOMStoreReadWriteTransaction newReadWriteTransaction() {
- return new ClientBackedReadWriteTransaction(getClient().createTransaction());
+ return new ClientBackedReadWriteTransaction(getClient().createTransaction(), allocationContext());
+ }
+
+ private boolean debugAllocation() {
+ return getActorContext().getDatastoreContext().isTransactionDebugContextEnabled();
+ }
+
+ private Throwable allocationContext() {
+ return debugAllocation() ? new Throwable("allocated at") : null;
}
}