import akka.actor.ActorSystem;
import com.google.common.annotations.VisibleForTesting;
import org.opendaylight.controller.cluster.access.concepts.ClientIdentifier;
+import org.opendaylight.controller.cluster.databroker.actors.dds.DataStoreClient;
import org.opendaylight.controller.cluster.datastore.AbstractDataStore;
import org.opendaylight.controller.cluster.datastore.ClusterWrapper;
import org.opendaylight.controller.cluster.datastore.DatastoreContextFactory;
import org.opendaylight.controller.cluster.datastore.config.Configuration;
-import org.opendaylight.controller.cluster.datastore.messages.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.controller.cluster.datastore.persisted.DatastoreSnapshot;
+import org.opendaylight.controller.cluster.datastore.utils.ActorUtils;
+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.
}
@VisibleForTesting
- ClientBackedDataStore(final ActorContext actorContext, final ClientIdentifier identifier) {
- super(actorContext, identifier);
+ ClientBackedDataStore(final ActorUtils actorUtils, final ClientIdentifier identifier,
+ final DataStoreClient clientActor) {
+ super(actorUtils, identifier, 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 getActorUtils().getDatastoreContext().isTransactionDebugContextEnabled();
+ }
+
+ private Throwable allocationContext() {
+ return debugAllocation() ? new Throwable("allocated at") : null;
}
}