import org.opendaylight.controller.cluster.access.commands.TransactionMerge;
import org.opendaylight.controller.cluster.access.commands.TransactionModification;
import org.opendaylight.controller.cluster.access.commands.TransactionPreCommitRequest;
+import org.opendaylight.controller.cluster.access.commands.TransactionPurgeRequest;
import org.opendaylight.controller.cluster.access.commands.TransactionRequest;
import org.opendaylight.controller.cluster.access.commands.TransactionWrite;
import org.opendaylight.controller.cluster.access.concepts.Response;
final java.util.Optional<PersistenceProtocol> maybeProtocol = request.getPersistenceProtocol();
if (maybeProtocol.isPresent()) {
- seal();
Verify.verify(callback != null, "Request {} has null callback", request);
+ ensureSealed();
switch (maybeProtocol.get()) {
case ABORT:
sendAbort(callback);
break;
+ case READY:
+ // No-op, as we have already issued a seal()
+ break;
case SIMPLE:
sendRequest(commitRequest(false), callback);
break;
}
});
- successor.seal();
+ successor.ensureSealed();
final ModifyTransactionRequest successorReq = successor.commitRequest(req.isCoordinated());
successor.sendRequest(successorReq, callback);
} else if (request instanceof AbortLocalTransactionRequest) {
LOG.debug("Forwarding abort {} to successor {}", request, successor);
successor.abort();
+ } else if (request instanceof TransactionPurgeRequest) {
+ LOG.debug("Forwarding purge {} to successor {}", request, successor);
+ successor.purge();
} else {
throw new IllegalArgumentException("Unhandled request" + request);
}
request.getModification().applyToCursor(cursor);
}
- seal();
+ ensureSealed();
sendRequest(commitRequest(request.isCoordinated()), callback);
}
}