use of org.opendaylight.controller.sal.core.spi.data.DOMStoreTransactionChain in project controller by opendaylight.
the class DOMDataBrokerTransactionChainImpl method close.
@Override
public void close() {
final boolean success = STATE_UPDATER.compareAndSet(this, State.RUNNING, State.CLOSING);
if (!success) {
LOG.debug("Chain {} is no longer running", this);
return;
}
super.close();
for (DOMStoreTransactionChain subChain : getTxFactories().values()) {
subChain.close();
}
if (counter == 0) {
finishClose();
}
}
use of org.opendaylight.controller.sal.core.spi.data.DOMStoreTransactionChain in project controller by opendaylight.
the class InMemoryDataStoreTest method testTransactionChain.
@Test
public void testTransactionChain() throws InterruptedException, ExecutionException {
DOMStoreTransactionChain txChain = domStore.createTransactionChain();
assertNotNull(txChain);
/*
* We alocate new read-write transaction and write /test
*/
DOMStoreReadWriteTransaction firstTx = txChain.newReadWriteTransaction();
assertTestContainerWrite(firstTx);
/*
* First transaction is marked as ready, we are able to allocate chained
* transactions
*/
final DOMStoreThreePhaseCommitCohort firstWriteTxCohort = firstTx.ready();
/*
* We alocate chained transaction - read transaction, note first one is
* still not commited to datastore.
*/
DOMStoreReadTransaction secondReadTx = txChain.newReadOnlyTransaction();
/*
* We test if we are able to read data from tx, read should not fail
* since we are using chained transaction.
*/
assertTestContainerExists(secondReadTx);
/*
* We alocate next transaction, which is still based on first one, but
* is read-write.
*/
DOMStoreReadWriteTransaction thirdDeleteTx = txChain.newReadWriteTransaction();
/*
* We test existence of /test in third transaction container should
* still be visible from first one (which is still uncommmited).
*/
assertTestContainerExists(thirdDeleteTx);
/*
* We delete node in third transaction
*/
thirdDeleteTx.delete(TestModel.TEST_PATH);
/*
* third transaction is sealed.
*/
DOMStoreThreePhaseCommitCohort thirdDeleteTxCohort = thirdDeleteTx.ready();
/*
* We commit first transaction
*/
assertThreePhaseCommit(firstWriteTxCohort);
// Alocates store transacion
DOMStoreReadTransaction storeReadTx = domStore.newReadOnlyTransaction();
/*
* We verify transaction is commited to store, container should exists
* in datastore.
*/
assertTestContainerExists(storeReadTx);
/*
* We commit third transaction
*/
assertThreePhaseCommit(thirdDeleteTxCohort);
}
Aggregations