This is an automated email from the ASF dual-hosted git repository. seanyinx pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-saga.git
commit e932061164ff07d39f613ceab5b7e3887638cc75 Author: Eric Lee <dagang...@huawei.com> AuthorDate: Mon Jan 15 10:40:24 2018 +0800 SCB-227 proper namings for aborted status Signed-off-by: Eric Lee <dagang...@huawei.com> --- .../saga/alpha/core/TxConsistentService.java | 6 +----- .../saga/alpha/server/GrpcTxEventEndpointImpl.java | 4 ++-- .../saga/alpha/server/AlphaIntegrationTest.java | 2 +- .../omega/connector/grpc/GrpcClientMessageSender.java | 5 +++-- .../grpc/LoadBalancedClusterMessageSender.java | 9 +++++---- .../grpc/LoadBalancedClusterMessageSenderTest.java | 8 ++++---- .../spring/TransactionInterceptionTest.java | 6 +++++- .../{MessageSender.java => AlphaResponse.java} | 19 ++++++------------- .../omega/transaction/CompensableInterceptor.java | 2 +- .../saga/omega/transaction/EventAwareInterceptor.java | 6 +++--- .../saga/omega/transaction/MessageSender.java | 4 ++-- .../transaction/SagaStartAnnotationProcessor.java | 2 +- .../saga/omega/transaction/TimeAwareInterceptor.java | 2 +- .../saga/omega/transaction/TransactionAspect.java | 9 +++++---- .../omega/transaction/CompensableInterceptorTest.java | 5 ++++- .../transaction/CompensationMessageHandlerTest.java | 5 ++++- .../transaction/SagaStartAnnotationProcessorTest.java | 5 ++++- .../saga/omega/transaction/SagaStartAspectTest.java | 5 ++++- .../omega/transaction/TimeAwareInterceptorTest.java | 4 ++-- .../saga/omega/transaction/TransactionAspectTest.java | 12 +++++++++--- .../src/main/proto/GrpcTxEvent.proto | 2 +- 21 files changed, 68 insertions(+), 54 deletions(-) diff --git a/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/TxConsistentService.java b/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/TxConsistentService.java index c9544ca..fa93752 100644 --- a/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/TxConsistentService.java +++ b/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/TxConsistentService.java @@ -55,7 +55,7 @@ public class TxConsistentService { } public boolean handle(TxEvent event) { - if (isInvalidTxStarted(event)) { + if (TxStartedEvent.name().equals(event.type()) && isGlobalTxAborted(event)) { return false; } @@ -106,8 +106,4 @@ public class TxConsistentService { private boolean isTxEndedEvent(TxEvent event) { return TxEndedEvent.name().equals(event.type()); } - - private boolean isInvalidTxStarted(TxEvent event) { - return TxStartedEvent.name().equals(event.type()) && isGlobalTxAborted(event); - } } diff --git a/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/GrpcTxEventEndpointImpl.java b/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/GrpcTxEventEndpointImpl.java index 6ca26ee..65d3e90 100644 --- a/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/GrpcTxEventEndpointImpl.java +++ b/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/GrpcTxEventEndpointImpl.java @@ -39,8 +39,8 @@ import io.grpc.stub.StreamObserver; class GrpcTxEventEndpointImpl extends TxEventServiceImplBase { - private static final GrpcAck ALLOW = GrpcAck.newBuilder().setValid(true).build(); - private static final GrpcAck REJECT = GrpcAck.newBuilder().setValid(false).build(); + private static final GrpcAck ALLOW = GrpcAck.newBuilder().setAborted(false).build(); + private static final GrpcAck REJECT = GrpcAck.newBuilder().setAborted(true).build(); private final TxConsistentService txConsistentService; diff --git a/alpha/alpha-server/src/test/java/org/apache/servicecomb/saga/alpha/server/AlphaIntegrationTest.java b/alpha/alpha-server/src/test/java/org/apache/servicecomb/saga/alpha/server/AlphaIntegrationTest.java index eb857d1..6cf1893 100644 --- a/alpha/alpha-server/src/test/java/org/apache/servicecomb/saga/alpha/server/AlphaIntegrationTest.java +++ b/alpha/alpha-server/src/test/java/org/apache/servicecomb/saga/alpha/server/AlphaIntegrationTest.java @@ -266,7 +266,7 @@ public class AlphaIntegrationTest { GrpcAck result = blockingStub .onTxEvent(eventOf(TxStartedEvent, localTxId1, parentTxId1, "service b".getBytes(), "method b")); - assertThat(result.getValid(), is(false)); + assertThat(result.getAborted(), is(true)); } private GrpcServiceConfig someServiceConfig() { diff --git a/omega/omega-connector/omega-connector-grpc/src/main/java/org/apache/servicecomb/saga/omega/connector/grpc/GrpcClientMessageSender.java b/omega/omega-connector/omega-connector-grpc/src/main/java/org/apache/servicecomb/saga/omega/connector/grpc/GrpcClientMessageSender.java index 70870bc..4af0773 100644 --- a/omega/omega-connector/omega-connector-grpc/src/main/java/org/apache/servicecomb/saga/omega/connector/grpc/GrpcClientMessageSender.java +++ b/omega/omega-connector/omega-connector-grpc/src/main/java/org/apache/servicecomb/saga/omega/connector/grpc/GrpcClientMessageSender.java @@ -23,6 +23,7 @@ package org.apache.servicecomb.saga.omega.connector.grpc; import java.util.function.Function; import org.apache.servicecomb.saga.omega.context.ServiceConfig; +import org.apache.servicecomb.saga.omega.transaction.AlphaResponse; import org.apache.servicecomb.saga.omega.transaction.MessageDeserializer; import org.apache.servicecomb.saga.omega.transaction.MessageHandler; import org.apache.servicecomb.saga.omega.transaction.MessageSender; @@ -84,9 +85,9 @@ public class GrpcClientMessageSender implements MessageSender { } @Override - public boolean send(TxEvent event) { + public AlphaResponse send(TxEvent event) { GrpcAck grpcAck = blockingEventService.onTxEvent(convertEvent(event)); - return grpcAck.getValid(); + return new AlphaResponse(grpcAck.getAborted()); } private GrpcTxEvent convertEvent(TxEvent event) { diff --git a/omega/omega-connector/omega-connector-grpc/src/main/java/org/apache/servicecomb/saga/omega/connector/grpc/LoadBalancedClusterMessageSender.java b/omega/omega-connector/omega-connector-grpc/src/main/java/org/apache/servicecomb/saga/omega/connector/grpc/LoadBalancedClusterMessageSender.java index 1eb6f7b..635ac5e 100644 --- a/omega/omega-connector/omega-connector-grpc/src/main/java/org/apache/servicecomb/saga/omega/connector/grpc/LoadBalancedClusterMessageSender.java +++ b/omega/omega-connector/omega-connector-grpc/src/main/java/org/apache/servicecomb/saga/omega/connector/grpc/LoadBalancedClusterMessageSender.java @@ -34,6 +34,7 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.function.Function; import org.apache.servicecomb.saga.omega.context.ServiceConfig; +import org.apache.servicecomb.saga.omega.transaction.AlphaResponse; import org.apache.servicecomb.saga.omega.transaction.MessageDeserializer; import org.apache.servicecomb.saga.omega.transaction.MessageHandler; import org.apache.servicecomb.saga.omega.transaction.MessageSender; @@ -124,15 +125,15 @@ public class LoadBalancedClusterMessageSender implements MessageSender { } @Override - public boolean send(TxEvent event) { - boolean result = false; + public AlphaResponse send(TxEvent event) { + AlphaResponse response = new AlphaResponse(false); boolean success = false; do { MessageSender messageSender = fastestSender(); try { long startTime = System.nanoTime(); - result = messageSender.send(event); + response = messageSender.send(event); senders.put(messageSender, System.nanoTime() - startTime); success = true; @@ -144,7 +145,7 @@ public class LoadBalancedClusterMessageSender implements MessageSender { } } while (!success && !Thread.currentThread().isInterrupted()); - return result; + return response; } private MessageSender fastestSender() { diff --git a/omega/omega-connector/omega-connector-grpc/src/test/java/org/apache/servicecomb/saga/omega/connector/grpc/LoadBalancedClusterMessageSenderTest.java b/omega/omega-connector/omega-connector-grpc/src/test/java/org/apache/servicecomb/saga/omega/connector/grpc/LoadBalancedClusterMessageSenderTest.java index 6c9fdcd..c9549cf 100644 --- a/omega/omega-connector/omega-connector-grpc/src/test/java/org/apache/servicecomb/saga/omega/connector/grpc/LoadBalancedClusterMessageSenderTest.java +++ b/omega/omega-connector/omega-connector-grpc/src/test/java/org/apache/servicecomb/saga/omega/connector/grpc/LoadBalancedClusterMessageSenderTest.java @@ -296,10 +296,10 @@ public class LoadBalancedClusterMessageSenderTest { @Test public void forwardSendResult() { - assertThat(messageSender.send(event), is(true)); + assertThat(messageSender.send(event).aborted(), is(false)); TxEvent rejectEvent = new TxStartedEvent(globalTxId, localTxId, parentTxId, "reject", "blah"); - assertThat(messageSender.send(rejectEvent), is(false)); + assertThat(messageSender.send(rejectEvent).aborted(), is(true)); } private int killServerReceivedMessage() { @@ -351,9 +351,9 @@ public class LoadBalancedClusterMessageSenderTest { } if ("TxStartedEvent".equals(request.getType()) && request.getCompensationMethod().equals("reject")) { - responseObserver.onNext(GrpcAck.newBuilder().setValid(false).build()); + responseObserver.onNext(GrpcAck.newBuilder().setAborted(true).build()); } else { - responseObserver.onNext(GrpcAck.newBuilder().setValid(true).build()); + responseObserver.onNext(GrpcAck.newBuilder().setAborted(false).build()); } responseObserver.onCompleted(); diff --git a/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/TransactionInterceptionTest.java b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/TransactionInterceptionTest.java index c30953f..7daf954 100644 --- a/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/TransactionInterceptionTest.java +++ b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/TransactionInterceptionTest.java @@ -39,6 +39,7 @@ import java.util.concurrent.ScheduledExecutorService; import org.apache.servicecomb.saga.omega.context.CompensationContext; import org.apache.servicecomb.saga.omega.context.IdGenerator; import org.apache.servicecomb.saga.omega.context.OmegaContext; +import org.apache.servicecomb.saga.omega.transaction.AlphaResponse; import org.apache.servicecomb.saga.omega.transaction.MessageHandler; import org.apache.servicecomb.saga.omega.transaction.MessageSender; import org.apache.servicecomb.saga.omega.transaction.TxAbortedEvent; @@ -310,7 +311,10 @@ public class TransactionInterceptionTest { @Bean MessageSender sender() { - return (event) -> messages.add(event.toString()); + return (event) -> { + messages.add(event.toString()); + return new AlphaResponse(false); + }; } } } diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/MessageSender.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/AlphaResponse.java similarity index 76% copy from omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/MessageSender.java copy to omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/AlphaResponse.java index 86cacc2..07df793 100644 --- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/MessageSender.java +++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/AlphaResponse.java @@ -17,21 +17,14 @@ package org.apache.servicecomb.saga.omega.transaction; -public interface MessageSender { - MessageSender NO_OP_SENDER = event -> true; +public class AlphaResponse { + private final boolean aborted; - default void onConnected() { + public AlphaResponse(boolean aborted) { + this.aborted = aborted; } - default void onDisconnected() { + public boolean aborted() { + return aborted; } - - default void close() { - } - - default String target() { - return "UNKNOWN"; - } - - boolean send(TxEvent event); } diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/CompensableInterceptor.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/CompensableInterceptor.java index e24b92c..074a5ec 100644 --- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/CompensableInterceptor.java +++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/CompensableInterceptor.java @@ -29,7 +29,7 @@ class CompensableInterceptor implements EventAwareInterceptor { } @Override - public boolean preIntercept(String parentTxId, String compensationMethod, Object... message) { + public AlphaResponse preIntercept(String parentTxId, String compensationMethod, Object... message) { return sender .send(new TxStartedEvent(context.globalTxId(), context.localTxId(), parentTxId, compensationMethod, message)); } diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/EventAwareInterceptor.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/EventAwareInterceptor.java index 2263b38..5f8165f 100644 --- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/EventAwareInterceptor.java +++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/EventAwareInterceptor.java @@ -20,8 +20,8 @@ package org.apache.servicecomb.saga.omega.transaction; public interface EventAwareInterceptor { EventAwareInterceptor NO_OP_INTERCEPTOR = new EventAwareInterceptor() { @Override - public boolean preIntercept(String parentTxId, String compensationMethod, Object... message) { - return true; + public AlphaResponse preIntercept(String parentTxId, String compensationMethod, Object... message) { + return new AlphaResponse(false); } @Override @@ -33,7 +33,7 @@ public interface EventAwareInterceptor { } }; - boolean preIntercept(String parentTxId, String compensationMethod, Object... message); + AlphaResponse preIntercept(String parentTxId, String compensationMethod, Object... message); void postIntercept(String parentTxId, String compensationMethod); diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/MessageSender.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/MessageSender.java index 86cacc2..5271b82 100644 --- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/MessageSender.java +++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/MessageSender.java @@ -18,7 +18,7 @@ package org.apache.servicecomb.saga.omega.transaction; public interface MessageSender { - MessageSender NO_OP_SENDER = event -> true; + MessageSender NO_OP_SENDER = event -> new AlphaResponse(false); default void onConnected() { } @@ -33,5 +33,5 @@ public interface MessageSender { return "UNKNOWN"; } - boolean send(TxEvent event); + AlphaResponse send(TxEvent event); } diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAnnotationProcessor.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAnnotationProcessor.java index b6ef898..7299b25 100644 --- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAnnotationProcessor.java +++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAnnotationProcessor.java @@ -30,7 +30,7 @@ class SagaStartAnnotationProcessor implements EventAwareInterceptor { } @Override - public boolean preIntercept(String parentTxId, String compensationMethod, Object... message) { + public AlphaResponse preIntercept(String parentTxId, String compensationMethod, Object... message) { return sender.send(new SagaStartedEvent(omegaContext.globalTxId(), omegaContext.localTxId())); } diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TimeAwareInterceptor.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TimeAwareInterceptor.java index ee00565..ca14551 100644 --- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TimeAwareInterceptor.java +++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TimeAwareInterceptor.java @@ -29,7 +29,7 @@ class TimeAwareInterceptor implements EventAwareInterceptor { } @Override - public boolean preIntercept(String parentTxId, String signature, Object... args) { + public AlphaResponse preIntercept(String parentTxId, String signature, Object... args) { return interceptor.preIntercept(parentTxId, signature, args); } diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TransactionAspect.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TransactionAspect.java index e506899..c57ee0e 100644 --- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TransactionAspect.java +++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/TransactionAspect.java @@ -57,11 +57,12 @@ public class TransactionAspect { context.newLocalTxId(); TimeAwareInterceptor interceptor = new TimeAwareInterceptor(this.interceptor); - boolean ok = interceptor.preIntercept(localTxId, signature, joinPoint.getArgs()); - if (!ok) { - LOG.info("Skipped transaction {} due to abort.", context.globalTxId()); + AlphaResponse response = interceptor.preIntercept(localTxId, signature, joinPoint.getArgs()); + if (response.aborted()) { + String abortedLocalTxId = context.localTxId(); context.setLocalTxId(localTxId); - return null; + throw new IllegalStateException("Abort local sub transaction " + abortedLocalTxId + + " due to global transaction " + context.globalTxId() + " has already aborted."); } LOG.debug("Updated context {} for compensable method {} ", context, method.toString()); diff --git a/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/CompensableInterceptorTest.java b/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/CompensableInterceptorTest.java index d4bfef6..21af7e6 100644 --- a/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/CompensableInterceptorTest.java +++ b/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/CompensableInterceptorTest.java @@ -41,7 +41,10 @@ public class CompensableInterceptorTest { private final String localTxId = UUID.randomUUID().toString(); private final String parentTxId = UUID.randomUUID().toString(); - private final MessageSender sender = messages::add; + private final MessageSender sender = e -> { + messages.add(e); + return new AlphaResponse(false); + }; private final String message = uniquify("message"); private final String compensationMethod = getClass().getCanonicalName(); diff --git a/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/CompensationMessageHandlerTest.java b/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/CompensationMessageHandlerTest.java index bc126ae..0b33d4b 100644 --- a/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/CompensationMessageHandlerTest.java +++ b/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/CompensationMessageHandlerTest.java @@ -33,7 +33,10 @@ import org.junit.Test; public class CompensationMessageHandlerTest { private final List<TxEvent> events = new ArrayList<>(); - private final MessageSender sender = events::add; + private final MessageSender sender = e -> { + events.add(e); + return new AlphaResponse(false); + }; private final String globalTxId = uniquify("globalTxId"); private final String localTxId = uniquify("localTxId"); diff --git a/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAnnotationProcessorTest.java b/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAnnotationProcessorTest.java index c146f5b..f8e936d 100644 --- a/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAnnotationProcessorTest.java +++ b/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAnnotationProcessorTest.java @@ -36,7 +36,10 @@ public class SagaStartAnnotationProcessorTest { private final List<TxEvent> messages = new ArrayList<>(); - private final MessageSender sender = messages::add; + private final MessageSender sender = e -> { + messages.add(e); + return new AlphaResponse(false); + }; private final String globalTxId = UUID.randomUUID().toString(); diff --git a/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAspectTest.java b/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAspectTest.java index 6d2e1a6..7316161 100644 --- a/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAspectTest.java +++ b/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAspectTest.java @@ -47,7 +47,10 @@ public class SagaStartAspectTest { private final List<TxEvent> messages = new ArrayList<>(); private final String globalTxId = UUID.randomUUID().toString(); - private final MessageSender sender = messages::add; + private final MessageSender sender = e -> { + messages.add(e); + return new AlphaResponse(false); + }; private final ProceedingJoinPoint joinPoint = Mockito.mock(ProceedingJoinPoint.class); private final MethodSignature methodSignature = Mockito.mock(MethodSignature.class); diff --git a/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/TimeAwareInterceptorTest.java b/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/TimeAwareInterceptorTest.java index 9e4055f..9ff0214 100644 --- a/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/TimeAwareInterceptorTest.java +++ b/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/TimeAwareInterceptorTest.java @@ -45,8 +45,8 @@ public class TimeAwareInterceptorTest { private final EventAwareInterceptor underlying = new EventAwareInterceptor() { @Override - public boolean preIntercept(String parentTxId, String compensationMethod, Object... message) { - return true; + public AlphaResponse preIntercept(String parentTxId, String compensationMethod, Object... message) { + return new AlphaResponse(false); } @Override diff --git a/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/TransactionAspectTest.java b/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/TransactionAspectTest.java index 8f7c73a..0d8fcd2 100644 --- a/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/TransactionAspectTest.java +++ b/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/TransactionAspectTest.java @@ -52,7 +52,10 @@ public class TransactionAspectTest { private final String newLocalTxId = UUID.randomUUID().toString(); - private final MessageSender sender = messages::add; + private final MessageSender sender = e -> { + messages.add(e); + return new AlphaResponse(false); + }; private final ProceedingJoinPoint joinPoint = mock(ProceedingJoinPoint.class); private final MethodSignature methodSignature = mock(MethodSignature.class); @@ -166,13 +169,16 @@ public class TransactionAspectTest { @Test public void returnImmediatelyWhenReceivedRejectResponse() { MessageSender sender = mock(MessageSender.class); - when(sender.send(any())).thenReturn(false); + when(sender.send(any())).thenReturn(new AlphaResponse(true)); TransactionAspect aspect = new TransactionAspect(sender, omegaContext); try { aspect.advise(joinPoint, compensable); + expectFailing(IllegalStateException.class); + } catch (IllegalStateException e) { + assertThat(e.getMessage().contains("Abort local sub transaction"), is(true)); } catch (Throwable throwable) { - fail("Unexpected exception: " + throwable.getMessage()); + expectFailing(IllegalStateException.class); } verify(sender, times(1)).send(any()); diff --git a/pack-contracts/pack-contract-grpc/src/main/proto/GrpcTxEvent.proto b/pack-contracts/pack-contract-grpc/src/main/proto/GrpcTxEvent.proto index 405edff..2636881 100644 --- a/pack-contracts/pack-contract-grpc/src/main/proto/GrpcTxEvent.proto +++ b/pack-contracts/pack-contract-grpc/src/main/proto/GrpcTxEvent.proto @@ -33,7 +33,7 @@ message GrpcServiceConfig { } message GrpcAck { - bool valid = 1; + bool aborted = 1; } message GrpcTxEvent { -- To stop receiving notification emails like this one, please contact "commits@servicecomb.apache.org" <commits@servicecomb.apache.org>.