LocalReadOnlyProxyTransaction(final ProxyHistory parent, final TransactionIdentifier identifier,
final DataTreeSnapshot snapshot) {
- super(parent, identifier);
+ super(parent, identifier, false);
this.snapshot = Preconditions.checkNotNull(snapshot);
}
+ LocalReadOnlyProxyTransaction(final ProxyHistory parent, final TransactionIdentifier identifier) {
+ super(parent, identifier, true);
+ // It is an error to touch snapshot once we are DONE
+ this.snapshot = null;
+ }
+
@Override
boolean isSnapshotOnly() {
return true;
@Override
DataTreeSnapshot readOnlyView() {
- return snapshot;
+ return Preconditions.checkNotNull(snapshot, "Transaction %s is DONE", getIdentifier());
}
@Override
}
@Override
- void applyModifyTransactionRequest(final ModifyTransactionRequest request,
+ void applyForwardedModifyTransactionRequest(final ModifyTransactionRequest request,
final Consumer<Response<?, ?>> callback) {
+ commonModifyTransactionRequest(request);
+ abort();
+ }
+
+ @Override
+ void replayModifyTransactionRequest(final ModifyTransactionRequest request,
+ final Consumer<Response<?, ?>> callback, final long enqueuedTicks) {
+ commonModifyTransactionRequest(request);
+ enqueueAbort(callback, enqueuedTicks);
+ }
+
+ private static void commonModifyTransactionRequest(final ModifyTransactionRequest request) {
Verify.verify(request.getModifications().isEmpty());
final PersistenceProtocol protocol = request.getPersistenceProtocol().get();
Verify.verify(protocol == PersistenceProtocol.ABORT);
- abort();
}
-
}