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 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;
switch (maybeProtocol.get()) {
case ABORT:
- sendAbort(callback);
+ sendRequest(new AbortLocalTransactionRequest(getIdentifier(), localActor()), callback);
break;
case READY:
// No-op, as we have already issued a seal()
private volatile Exception operationFailure;
-
RemoteProxyTransaction(final ProxyHistory parent, final TransactionIdentifier identifier,
final boolean snapshotOnly, final boolean sendReadyOnSeal) {
super(parent);
switch (maybeProto.get()) {
case ABORT:
- sendAbort(callback);
+ ensureInitializedBuilder();
+ builder.setAbort();
+ final ModifyTransactionRequest newReq = builder.build();
+ builderBusy = false;
+ sendRequest(newReq, callback);
break;
case SIMPLE:
sendRequest(commitRequest(false), callback);
final ModifyTransactionRequest request = builder.build();
final Consumer<Response<?, ?>> callback = createCallbackMock();
transaction.applyModifyTransactionRequest(request, callback);
- getTester().expectTransactionRequest(TransactionAbortRequest.class);
+ getTester().expectTransactionRequest(AbortLocalTransactionRequest.class);
}
@Test
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.assertTrue(received.getPersistenceProtocol().isPresent());
+ Assert.assertEquals(PersistenceProtocol.ABORT, received.getPersistenceProtocol().get());
}
@Test