Search in sources :

Example 1 with DOMStoreTransactionChain

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();
    }
}
Also used : DOMStoreTransactionChain(org.opendaylight.controller.sal.core.spi.data.DOMStoreTransactionChain)

Example 2 with DOMStoreTransactionChain

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);
}
Also used : DOMStoreReadTransaction(org.opendaylight.controller.sal.core.spi.data.DOMStoreReadTransaction) DOMStoreTransactionChain(org.opendaylight.controller.sal.core.spi.data.DOMStoreTransactionChain) DOMStoreReadWriteTransaction(org.opendaylight.controller.sal.core.spi.data.DOMStoreReadWriteTransaction) DOMStoreThreePhaseCommitCohort(org.opendaylight.controller.sal.core.spi.data.DOMStoreThreePhaseCommitCohort) Test(org.junit.Test)

Aggregations

DOMStoreTransactionChain (org.opendaylight.controller.sal.core.spi.data.DOMStoreTransactionChain)2 Test (org.junit.Test)1 DOMStoreReadTransaction (org.opendaylight.controller.sal.core.spi.data.DOMStoreReadTransaction)1 DOMStoreReadWriteTransaction (org.opendaylight.controller.sal.core.spi.data.DOMStoreReadWriteTransaction)1 DOMStoreThreePhaseCommitCohort (org.opendaylight.controller.sal.core.spi.data.DOMStoreThreePhaseCommitCohort)1