Package org.opendaylight.mdsal.dom.api
Interface DOMDataTreeReadTransaction
- All Superinterfaces:
AutoCloseable
,DOMDataTreeReadOperations
,DOMDataTreeTransaction
,Identifiable<Object>
,Registration
- All Known Subinterfaces:
DOMDataTreeQueryReadTransaction
- All Known Implementing Classes:
ForwardingDOMDataReadOnlyTransaction
public interface DOMDataTreeReadTransaction
extends DOMDataTreeTransaction, DOMDataTreeReadOperations, Registration
A transaction that provides read access to a logical data store.
View of the data tree is a stable point-in-time snapshot of the current data tree state when the transaction was created. It's state and underlying data tree is not affected by other concurrently running transactions.
Implementation Note: This interface is not intended to be implemented by users of MD-SAL, but only to be consumed by them.
Transaction isolation example
Lets assume initial state of data tree forPATH
is A
.
txRead = broker.newReadOnlyTransaction(); // read Transaction is snapshot of data
txWrite = broker.newReadWriteTransactoin(); // concurrent write transaction
txRead.read(OPERATIONAL, PATH).get(); // will return Optional containing A
txWrite = broker.put(OPERATIONAL, PATH, B); // writes B to PATH
txRead.read(OPERATIONAL, PATH).get(); // still returns Optional containing A
txWrite.submit().get(); // data tree is updated, PATH contains B
txRead.read(OPERATIONAL, PATH).get(); // still returns Optional containing A
txAfterCommit = broker.newReadOnlyTransaction(); // read Transaction is snapshot of new state
txAfterCommit.read(OPERATIONAL, PATH).get(); // returns Optional containing B;
Note: example contains blocking calls on future only to illustrate that action happened after other
asynchronous action. Use of blocking call AbstractFuture.get()
is
discouraged for most uses and you should use
FluentFuture.addCallback(com.google.common.util.concurrent.FutureCallback, java.util.concurrent.Executor)
or other functions from Futures
to register
more specific listeners.
-
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Closes this transaction and releases all resources associated with it.Methods inherited from interface org.opendaylight.mdsal.dom.api.DOMDataTreeReadOperations
exists, read
Methods inherited from interface org.opendaylight.yangtools.concepts.Identifiable
getIdentifier
-
Method Details
-
close
void close()Closes this transaction and releases all resources associated with it.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceRegistration
-