import org.opendaylight.controller.cluster.access.commands.TransactionModification;
import org.opendaylight.controller.cluster.access.commands.TransactionPreCommitRequest;
import org.opendaylight.controller.cluster.access.commands.TransactionPreCommitSuccess;
-import org.opendaylight.controller.cluster.access.commands.TransactionPurgeRequest;
-import org.opendaylight.controller.cluster.access.commands.TransactionPurgeResponse;
import org.opendaylight.controller.cluster.access.commands.TransactionRequest;
import org.opendaylight.controller.cluster.access.commands.TransactionSuccess;
import org.opendaylight.controller.cluster.access.commands.TransactionWrite;
handleTransactionDoCommit((TransactionDoCommitRequest) request, envelope, now);
return null;
} else if (request instanceof TransactionAbortRequest) {
- return handleTransactionAbort((TransactionAbortRequest) request, envelope, now);
- } else if (request instanceof TransactionPurgeRequest) {
- // No-op for now
- return new TransactionPurgeResponse(request.getTarget(), request.getSequence());
+ handleTransactionAbort((TransactionAbortRequest) request, envelope, now);
+ return null;
} else {
throw new UnsupportedRequestException(request);
}
});
}
- private TransactionSuccess<?> handleTransactionAbort(final TransactionAbortRequest request,
+ private void handleTransactionAbort(final TransactionAbortRequest request,
final RequestEnvelope envelope, final long now) throws RequestException {
if (readyCohort == null) {
- openTransaction.abort();
- return new TransactionAbortSuccess(getIdentifier(), request.getSequence());
+ openTransaction.abort(() -> recordAndSendSuccess(envelope, now,
+ new TransactionAbortSuccess(getIdentifier(), request.getSequence())));
+ return;
}
readyCohort.abort(new FutureCallback<Void>() {
recordAndSendFailure(envelope, now, new RuntimeRequestException("Abort failed", failure));
}
});
- return null;
}
private void coordinatedCommit(final RequestEnvelope envelope, final long now) {
switch (maybeProto.get()) {
case ABORT:
- openTransaction.abort();
+ openTransaction.abort(() -> replyModifySuccess(request.getSequence()));
openTransaction = null;
- return replyModifySuccess(request.getSequence());
+ return null;
case READY:
ensureReady();
return replyModifySuccess(request.getSequence());