summary |
shortlog |
log |
commit | commitdiff |
review |
tree
raw |
patch |
inline | side by side (from parent 1:
b8e58ad)
Immediate transaction aborts need to use the appropriate message,
not 3PC's TransactionAbortRequest.
Change-Id: I9e25e3f20ed62fc520853685af17accef35c1bb4
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit
4036805b31f73c7e7e2b06e84c8da975b2e45263)
import java.util.function.Supplier;
import javax.annotation.Nullable;
import javax.annotation.concurrent.NotThreadSafe;
import java.util.function.Supplier;
import javax.annotation.Nullable;
import javax.annotation.concurrent.NotThreadSafe;
+import org.opendaylight.controller.cluster.access.commands.AbortLocalTransactionRequest;
import org.opendaylight.controller.cluster.access.commands.CommitLocalTransactionRequest;
import org.opendaylight.controller.cluster.access.commands.ModifyTransactionRequest;
import org.opendaylight.controller.cluster.access.commands.PersistenceProtocol;
import org.opendaylight.controller.cluster.access.commands.CommitLocalTransactionRequest;
import org.opendaylight.controller.cluster.access.commands.ModifyTransactionRequest;
import org.opendaylight.controller.cluster.access.commands.PersistenceProtocol;
switch (maybeProtocol.get()) {
case ABORT:
switch (maybeProtocol.get()) {
case ABORT:
+ sendRequest(new AbortLocalTransactionRequest(getIdentifier(), localActor()), callback);
break;
case READY:
// No-op, as we have already issued a seal()
break;
case READY:
// No-op, as we have already issued a seal()
private volatile Exception operationFailure;
private volatile Exception operationFailure;
RemoteProxyTransaction(final ProxyHistory parent, final TransactionIdentifier identifier,
final boolean snapshotOnly, final boolean sendReadyOnSeal) {
super(parent);
RemoteProxyTransaction(final ProxyHistory parent, final TransactionIdentifier identifier,
final boolean snapshotOnly, final boolean sendReadyOnSeal) {
super(parent);
switch (maybeProto.get()) {
case ABORT:
switch (maybeProto.get()) {
case ABORT:
+ ensureInitializedBuilder();
+ builder.setAbort();
+ final ModifyTransactionRequest newReq = builder.build();
+ builderBusy = false;
+ sendRequest(newReq, callback);
break;
case SIMPLE:
sendRequest(commitRequest(false), callback);
break;
case SIMPLE:
sendRequest(commitRequest(false), callback);
final ModifyTransactionRequest request = builder.build();
final Consumer<Response<?, ?>> callback = createCallbackMock();
transaction.applyModifyTransactionRequest(request, callback);
final ModifyTransactionRequest request = builder.build();
final Consumer<Response<?, ?>> callback = createCallbackMock();
transaction.applyModifyTransactionRequest(request, callback);
- getTester().expectTransactionRequest(TransactionAbortRequest.class);
+ getTester().expectTransactionRequest(AbortLocalTransactionRequest.class);
builder.setSequence(0L);
builder.setAbort();
final ModifyTransactionRequest request = builder.build();
builder.setSequence(0L);
builder.setAbort();
final ModifyTransactionRequest request = builder.build();
- final TransactionAbortRequest received = testForwardToRemote(request, TransactionAbortRequest.class);
+ final ModifyTransactionRequest received = testForwardToRemote(request, ModifyTransactionRequest.class);
Assert.assertEquals(request.getTarget(), received.getTarget());
Assert.assertEquals(request.getTarget(), received.getTarget());
+ Assert.assertTrue(received.getPersistenceProtocol().isPresent());
+ Assert.assertEquals(PersistenceProtocol.ABORT, received.getPersistenceProtocol().get());