You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2018/08/20 11:11:42 UTC
[incubator-servicecomb-saga] branch SCB-665 updated (c93373d ->
4efa3a9)
This is an automated email from the ASF dual-hosted git repository.
ningjiang pushed a change to branch SCB-665
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-saga.git.
discard c93373d SCB-817 Updated the pack-contracts protocal for TCC
discard 5a52f6e SCB-817 Added TCC events in Omega part (WIP)
discard e071a9b SCB-817 Added TCC events in Omega part (WIP)
add 8a2bcbe SCB-852 Split akka related code to saga-core-akka
add c1f0a10 SCB-852 Fixed the build error by adding saga-core-akka module
add 089ffd7 SCB-852 Added the uncommitted pom of saga-core-akka
add 7e586b5 SCB-853 Saga-core supports JDK7 now
new 5b1ea96 SCB-817 Added TCC events in Omega part (WIP)
new 0c16634 SCB-817 Added TCC events in Omega part (WIP)
new 277ff27 SCB-817 Updated the pack-contracts protocal for TCC
new 29bfbde SCB-817 Added the License header
new 4efa3a9 SCB-817 Updated the grpc file of TccEventService
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (c93373d)
\
N -- N -- N refs/heads/SCB-665 (4efa3a9)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../tcc/TccStartAnnotationProcessor.java | 16 ++++++
.../saga/omega/transaction/tcc/TccStartAspect.java | 16 ++++++
.../omega/transaction/tcc/events/TccEndEvent.java | 16 ++++++
.../transaction/tcc/events/TccStartEvent.java | 16 ++++++
.../src/main/proto/GrpcTccEvent.proto | 18 +++----
pom.xml | 12 +++++
{saga-core => saga-core-akka}/pom.xml | 19 ++++++-
.../saga/core/actors/ActorBasedSaga.java | 2 +-
.../saga/core/actors/ActorBasedSagaFactory.java | 0
.../saga/core/actors/CompletionCallbackActor.java | 0
.../saga/core/actors/EventContextImpl.java | 0
.../servicecomb/saga/core/actors/RequestActor.java | 0
.../saga/core/actors/RequestActorBuilder.java | 0
.../saga/core/actors/RequestActorContext.java | 0
.../saga/core/actors/messages/AbortMessage.java | 0
.../core/actors/messages/AbortRecoveryMessage.java | 0
.../core/actors/messages/CompensateMessage.java | 0
.../messages/CompensationRecoveryMessage.java | 0
.../saga/core/actors/messages/FailMessage.java | 0
.../saga/core/actors/messages/Message.java | 0
.../saga/core/actors/messages/TransactMessage.java | 1 +
.../messages/TransactionRecoveryMessage.java | 0
.../ActorBasedSagaExecutionComponentTest.java | 2 +-
.../core/actors/ActorBasedSagaIntegrationTest.java | 16 +++---
.../core/actors/CompletionCallbackActorTest.java | 4 +-
.../saga/core/actors/EventContextImplTest.java | 0
.../saga/core/actors/RequestActorBuilderTest.java | 2 +-
.../saga/core/actors/RequestActorTest.java | 0
.../src/test/resources/application.conf | 0
.../src/test}/resources/log4j2.xml | 0
saga-core/pom.xml | 46 +++++++++-------
.../servicecomb/saga/core/BackwardRecovery.java | 5 ++
.../apache/servicecomb/saga/core/Compensation.java | 32 +++++++++--
.../saga/core/CompositeSagaResponse.java | 31 ++++++++---
.../apache/servicecomb/saga/core/Descriptive.java | 4 +-
.../org/apache/servicecomb/saga/core/Fallback.java | 17 +++++-
.../servicecomb/saga/core/ForwardRecovery.java | 5 ++
.../servicecomb/saga/core/GraphBasedSaga.java | 15 +++---
.../saga/core/LoggingRecoveryPolicy.java | 5 ++
.../servicecomb/saga/core/NoOpSagaRequest.java | 6 +++
.../apache/servicecomb/saga/core/Operation.java | 8 +--
.../servicecomb/saga/core/RestOperation.java | 14 +++--
.../apache/servicecomb/saga/core/SagaContext.java | 4 +-
.../servicecomb/saga/core/SagaContextImpl.java | 35 +++++++-----
.../apache/servicecomb/saga/core/SagaEvent.java | 5 ++
.../apache/servicecomb/saga/core/SagaRequest.java | 6 +--
.../servicecomb/saga/core/SagaTaskFactory.java | 10 ++--
.../apache/servicecomb/saga/core/Transaction.java | 18 +++++++
.../servicecomb/saga/core/TransactionConsumer.java | 5 ++
.../saga/core/dag/ByLevelTraveller.java | 5 +-
.../saga/core/dag/GraphBasedSagaFactory.java | 3 +-
.../servicecomb/saga/core/dag/GraphBuilder.java | 9 ++--
.../saga/core/dag/GraphCycleDetectorImpl.java | 26 +++++----
.../org/apache/servicecomb/saga/core/dag/Node.java | 4 +-
.../servicecomb/saga/core/CompensationImpl.java | 5 ++
.../saga/core/CompositeSagaResponseTest.java | 8 +++
.../servicecomb/saga/core/ForwardRecoveryTest.java | 7 ++-
.../servicecomb/saga/core/RestOperationTest.java | 18 ++++---
.../servicecomb/saga/core/RetrySagaLogTest.java | 19 +++++--
.../saga/core/SagaExecutionComponentTestBase.java | 44 +++++++++++----
.../servicecomb/saga/core/SagaIntegrationTest.java | 63 ++++++++++++++--------
.../dag/DirectedAcyclicGraphTraversalTest.java | 4 +-
.../saga/core/dag/GraphBuilderTest.java | 40 ++++++++------
.../saga/core/dag/GraphCycleDetectorTest.java | 3 +-
.../servicecomb/saga/format/JacksonFallback.java | 11 ++++
saga-spring/pom.xml | 4 ++
66 files changed, 502 insertions(+), 182 deletions(-)
copy {saga-core => saga-core-akka}/pom.xml (86%)
rename {saga-core => saga-core-akka}/src/main/java/org/apache/servicecomb/saga/core/actors/ActorBasedSaga.java (100%)
rename {saga-core => saga-core-akka}/src/main/java/org/apache/servicecomb/saga/core/actors/ActorBasedSagaFactory.java (100%)
rename {saga-core => saga-core-akka}/src/main/java/org/apache/servicecomb/saga/core/actors/CompletionCallbackActor.java (100%)
rename {saga-core => saga-core-akka}/src/main/java/org/apache/servicecomb/saga/core/actors/EventContextImpl.java (100%)
rename {saga-core => saga-core-akka}/src/main/java/org/apache/servicecomb/saga/core/actors/RequestActor.java (100%)
rename {saga-core => saga-core-akka}/src/main/java/org/apache/servicecomb/saga/core/actors/RequestActorBuilder.java (100%)
rename {saga-core => saga-core-akka}/src/main/java/org/apache/servicecomb/saga/core/actors/RequestActorContext.java (100%)
rename {saga-core => saga-core-akka}/src/main/java/org/apache/servicecomb/saga/core/actors/messages/AbortMessage.java (100%)
rename {saga-core => saga-core-akka}/src/main/java/org/apache/servicecomb/saga/core/actors/messages/AbortRecoveryMessage.java (100%)
rename {saga-core => saga-core-akka}/src/main/java/org/apache/servicecomb/saga/core/actors/messages/CompensateMessage.java (100%)
rename {saga-core => saga-core-akka}/src/main/java/org/apache/servicecomb/saga/core/actors/messages/CompensationRecoveryMessage.java (100%)
rename {saga-core => saga-core-akka}/src/main/java/org/apache/servicecomb/saga/core/actors/messages/FailMessage.java (100%)
rename {saga-core => saga-core-akka}/src/main/java/org/apache/servicecomb/saga/core/actors/messages/Message.java (100%)
rename {saga-core => saga-core-akka}/src/main/java/org/apache/servicecomb/saga/core/actors/messages/TransactMessage.java (99%)
rename {saga-core => saga-core-akka}/src/main/java/org/apache/servicecomb/saga/core/actors/messages/TransactionRecoveryMessage.java (100%)
rename {saga-core => saga-core-akka}/src/test/java/org/apache/servicecomb/saga/core/actors/ActorBasedSagaExecutionComponentTest.java (100%)
rename {saga-core => saga-core-akka}/src/test/java/org/apache/servicecomb/saga/core/actors/ActorBasedSagaIntegrationTest.java (100%)
rename {saga-core => saga-core-akka}/src/test/java/org/apache/servicecomb/saga/core/actors/CompletionCallbackActorTest.java (100%)
rename {saga-core => saga-core-akka}/src/test/java/org/apache/servicecomb/saga/core/actors/EventContextImplTest.java (100%)
rename {saga-core => saga-core-akka}/src/test/java/org/apache/servicecomb/saga/core/actors/RequestActorBuilderTest.java (100%)
rename {saga-core => saga-core-akka}/src/test/java/org/apache/servicecomb/saga/core/actors/RequestActorTest.java (100%)
copy {saga-core => saga-core-akka}/src/test/resources/application.conf (100%)
copy {saga-spring/src/main => saga-core-akka/src/test}/resources/log4j2.xml (100%)
create mode 100644 saga-core/src/main/java/org/apache/servicecomb/saga/core/TransactionConsumer.java
[incubator-servicecomb-saga] 04/05: SCB-817 Added the License header
Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
ningjiang pushed a commit to branch SCB-665
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-saga.git
commit 29bfbdeef98c41559d16f565095d85951922cd21
Author: Willem Jiang <ji...@huawei.com>
AuthorDate: Mon Aug 20 19:06:20 2018 +0800
SCB-817 Added the License header
---
.../transaction/tcc/TccStartAnnotationProcessor.java | 16 ++++++++++++++++
.../saga/omega/transaction/tcc/TccStartAspect.java | 16 ++++++++++++++++
.../saga/omega/transaction/tcc/events/TccEndEvent.java | 16 ++++++++++++++++
.../saga/omega/transaction/tcc/events/TccStartEvent.java | 16 ++++++++++++++++
4 files changed, 64 insertions(+)
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccStartAnnotationProcessor.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccStartAnnotationProcessor.java
index b38d876..b93373f 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccStartAnnotationProcessor.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccStartAnnotationProcessor.java
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.apache.servicecomb.saga.omega.transaction.tcc;
import javax.transaction.TransactionalException;
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccStartAspect.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccStartAspect.java
index c8b7936..90728e3 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccStartAspect.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccStartAspect.java
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.apache.servicecomb.saga.omega.transaction.tcc;
import java.lang.invoke.MethodHandles;
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TccEndEvent.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TccEndEvent.java
index 1022aee..541489f 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TccEndEvent.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TccEndEvent.java
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.apache.servicecomb.saga.omega.transaction.tcc.events;
public class TccEndEvent {
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TccStartEvent.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TccStartEvent.java
index c94dbca..416c182 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TccStartEvent.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TccStartEvent.java
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.apache.servicecomb.saga.omega.transaction.tcc.events;
public class TccStartEvent {
[incubator-servicecomb-saga] 01/05: SCB-817 Added TCC events in
Omega part (WIP)
Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
ningjiang pushed a commit to branch SCB-665
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-saga.git
commit 5b1ea9659b1c37a998450f6b49b59b94921efee9
Author: Willem Jiang <ji...@huawei.com>
AuthorDate: Sun Aug 12 11:16:22 2018 +0800
SCB-817 Added TCC events in Omega part (WIP)
---
.../saga/omega/context/annotations/TccStart.java | 15 +++++
.../saga/omega/transaction/annotations/TCC.java | 64 ++++++++++++++++++++++
.../saga/omega/transaction/tcc/TccAspect.java | 48 ++++++++++++++++
.../saga/omega/transaction/tcc/TccInterceptor.java | 4 ++
.../tcc/TccStartAnnotationProcessor.java | 47 ++++++++++++++++
.../saga/omega/transaction/tcc/TccStartAspect.java | 60 ++++++++++++++++++++
.../omega/transaction/tcc/events/CancelEvent.java | 20 +++++++
.../omega/transaction/tcc/events/ConfirmEvent.java | 20 +++++++
.../transaction/tcc/events/ParticipateEvent.java | 21 +++++++
.../tcc/events/TransactionEndEvent.java | 4 ++
.../tcc/events/TransationStartEvent.java | 4 ++
11 files changed, 307 insertions(+)
diff --git a/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/annotations/TccStart.java b/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/annotations/TccStart.java
new file mode 100644
index 0000000..c9154f9
--- /dev/null
+++ b/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/annotations/TccStart.java
@@ -0,0 +1,15 @@
+package org.apache.servicecomb.saga.omega.context.annotations;
+
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * Indicates the annotated method will start a TCC .
+ */
+@Retention(RUNTIME)
+@Target(METHOD)
+public @interface TccStart {
+}
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/annotations/TCC.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/annotations/TCC.java
new file mode 100644
index 0000000..a095978
--- /dev/null
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/annotations/TCC.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicecomb.saga.omega.transaction.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.METHOD})
+/**
+ * Indicates the annotated method will start a sub-transaction. <br>
+ * A <code>@TCC</code> method should satisfy below requirements:
+ * <ol>
+ * <li>all parameters are serialized</li>
+ * <li>is idempotent</li>
+ * <li>the object instance which @TCC method resides in should be stateless</li>
+ * </ol>
+ */
+public @interface TCC {
+ /**
+ * Confirm method name.<br>
+ * A confirm method should satisfy below requirements:
+ * <ol>
+ * <li>has same parameter list as @TCC method's</li>
+ * <li>all parameters are serialized</li>
+ * <li>is idempotent</li>
+ * <li>be in the same class as @TCC method is in</li>
+ * </ol>
+ *
+ * @return
+ */
+ String confirmMethod() default "";
+
+ /**
+ * Cancel method name.<br>
+ * A cancel method should satisfy below requirements:
+ * <ol>
+ * <li>has same parameter list as @TCC method's</li>
+ * <li>all parameters are serialized</li>
+ * <li>is idempotent</li>
+ * <li>be in the same class as @TCC method is in</li>
+ * </ol>
+ *
+ * @return
+ */
+ String cancelMethod() default "";
+
+}
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccAspect.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccAspect.java
new file mode 100644
index 0000000..173cb78
--- /dev/null
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccAspect.java
@@ -0,0 +1,48 @@
+package org.apache.servicecomb.saga.omega.transaction.tcc;
+
+import java.lang.invoke.MethodHandles;
+import java.lang.reflect.Method;
+
+import org.apache.servicecomb.saga.omega.context.OmegaContext;
+import org.apache.servicecomb.saga.omega.transaction.CompensableInterceptor;
+import org.apache.servicecomb.saga.omega.transaction.MessageSender;
+import org.apache.servicecomb.saga.omega.transaction.RecoveryPolicy;
+import org.apache.servicecomb.saga.omega.transaction.RecoveryPolicyFactory;
+import org.apache.servicecomb.saga.omega.transaction.annotations.Compensable;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Aspect
+public class TccAspect {
+ private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+ private final OmegaContext context;
+
+ private final CompensableInterceptor interceptor;
+
+ public TccAspect(MessageSender sender, OmegaContext context) {
+ this.context = context;
+ this.interceptor = new CompensableInterceptor(context, sender);
+ }
+
+ @Around("execution(@org.apache.servicecomb.saga.omega.transaction.annotations.Compensable * *(..)) && @annotation(compensable)")
+ Object advise(ProceedingJoinPoint joinPoint, Compensable compensable) throws Throwable {
+ Method method = ((MethodSignature) joinPoint.getSignature()).getMethod();
+ String localTxId = context.localTxId();
+ context.newLocalTxId();
+ LOG.debug("Updated context {} for compensable method {} ", context, method.toString());
+
+ int retries = compensable.retries();
+ RecoveryPolicy recoveryPolicy = RecoveryPolicyFactory.getRecoveryPolicy(retries);
+ try {
+ return recoveryPolicy.apply(joinPoint, compensable, interceptor, context, localTxId, retries);
+ } finally {
+ context.setLocalTxId(localTxId);
+ LOG.debug("Restored context back to {}", context);
+ }
+ }
+}
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccInterceptor.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccInterceptor.java
new file mode 100644
index 0000000..5ada269
--- /dev/null
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccInterceptor.java
@@ -0,0 +1,4 @@
+package org.apache.servicecomb.saga.omega.transaction.tcc;
+
+public class TccInterceptor {
+}
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccStartAnnotationProcessor.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccStartAnnotationProcessor.java
new file mode 100644
index 0000000..3e708cd
--- /dev/null
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccStartAnnotationProcessor.java
@@ -0,0 +1,47 @@
+package org.apache.servicecomb.saga.omega.transaction.tcc;
+
+import javax.transaction.TransactionalException;
+
+import org.apache.servicecomb.saga.omega.context.OmegaContext;
+import org.apache.servicecomb.saga.omega.transaction.AlphaResponse;
+import org.apache.servicecomb.saga.omega.transaction.EventAwareInterceptor;
+import org.apache.servicecomb.saga.omega.transaction.MessageSender;
+import org.apache.servicecomb.saga.omega.transaction.OmegaException;
+import org.apache.servicecomb.saga.omega.transaction.SagaEndedEvent;
+import org.apache.servicecomb.saga.omega.transaction.SagaStartedEvent;
+import org.apache.servicecomb.saga.omega.transaction.TxAbortedEvent;
+
+public class TccStartAnnotationProcessor implements EventAwareInterceptor {
+
+ private final OmegaContext omegaContext;
+ private final MessageSender sender;
+
+ TccStartAnnotationProcessor(OmegaContext omegaContext, MessageSender sender) {
+ this.omegaContext = omegaContext;
+ this.sender = sender;
+ }
+
+ @Override
+ public AlphaResponse preIntercept(String parentTxId, String compensationMethod, int timeout, String retriesMethod,
+ int retries, Object... message) {
+ try {
+ return sender.send(new SagaStartedEvent(omegaContext.globalTxId(), omegaContext.localTxId(), timeout));
+ } catch (OmegaException e) {
+ throw new TransactionalException(e.getMessage(), e.getCause());
+ }
+ }
+
+ @Override
+ public void postIntercept(String parentTxId, String compensationMethod) {
+ AlphaResponse response = sender.send(new SagaEndedEvent(omegaContext.globalTxId(), omegaContext.localTxId()));
+ if (response.aborted()) {
+ throw new OmegaException("transaction " + parentTxId + " is aborted");
+ }
+ }
+
+ @Override
+ public void onError(String parentTxId, String compensationMethod, Throwable throwable) {
+ String globalTxId = omegaContext.globalTxId();
+ sender.send(new TxAbortedEvent(globalTxId, omegaContext.localTxId(), null, compensationMethod, throwable));
+ }
+}
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccStartAspect.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccStartAspect.java
new file mode 100644
index 0000000..5b380db
--- /dev/null
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccStartAspect.java
@@ -0,0 +1,60 @@
+package org.apache.servicecomb.saga.omega.transaction.tcc;
+
+import java.lang.invoke.MethodHandles;
+import java.lang.reflect.Method;
+
+import org.apache.servicecomb.saga.omega.context.OmegaContext;
+import org.apache.servicecomb.saga.omega.context.annotations.SagaStart;
+import org.apache.servicecomb.saga.omega.transaction.MessageSender;
+import org.apache.servicecomb.saga.omega.transaction.OmegaException;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Aspect
+public class TccStartAspect {
+ private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+ private final TccStartAnnotationProcessor tccStartAnnotationProcessor;
+
+ private final OmegaContext context;
+
+ public TccStartAspect(MessageSender sender, OmegaContext context) {
+ this.context = context;
+ this.tccStartAnnotationProcessor = new TccStartAnnotationProcessor(context, sender);
+ }
+
+ @Around("execution(@org.apache.servicecomb.saga.omega.context.annotations.TccStart * *(..)) && @annotation(sagaStart)")
+ Object advise(ProceedingJoinPoint joinPoint, SagaStart sagaStart) throws Throwable {
+ initializeOmegaContext();
+ Method method = ((MethodSignature) joinPoint.getSignature()).getMethod();
+
+ tccStartAnnotationProcessor.preIntercept(context.globalTxId(), method.toString(), sagaStart.timeout(), "", 0);
+ LOG.debug("Initialized context {} before execution of method {}", context, method.toString());
+
+ try {
+ Object result = joinPoint.proceed();
+
+ tccStartAnnotationProcessor.postIntercept(context.globalTxId(), method.toString());
+ LOG.debug("Transaction with context {} has finished.", context);
+
+ return result;
+ } catch (Throwable throwable) {
+ // We don't need to handle the OmegaException here
+ if (!(throwable instanceof OmegaException)) {
+ tccStartAnnotationProcessor.onError(context.globalTxId(), method.toString(), throwable);
+ LOG.error("Transaction {} failed.", context.globalTxId());
+ }
+ throw throwable;
+ } finally {
+ context.clear();
+ }
+ }
+
+ private void initializeOmegaContext() {
+ context.setLocalTxId(context.newGlobalTxId());
+ }
+}
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/CancelEvent.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/CancelEvent.java
new file mode 100644
index 0000000..7659812
--- /dev/null
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/CancelEvent.java
@@ -0,0 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicecomb.saga.omega.transaction.tcc.events;
+
+public class CancelEvent {
+}
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/ConfirmEvent.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/ConfirmEvent.java
new file mode 100644
index 0000000..f01675b
--- /dev/null
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/ConfirmEvent.java
@@ -0,0 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicecomb.saga.omega.transaction.tcc.events;
+
+public class ConfirmEvent {
+}
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/ParticipateEvent.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/ParticipateEvent.java
new file mode 100644
index 0000000..83e910b
--- /dev/null
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/ParticipateEvent.java
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicecomb.saga.omega.transaction.tcc.events;
+
+
+public class ParticipateEvent {
+}
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TransactionEndEvent.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TransactionEndEvent.java
new file mode 100644
index 0000000..9613602
--- /dev/null
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TransactionEndEvent.java
@@ -0,0 +1,4 @@
+package org.apache.servicecomb.saga.omega.transaction.tcc.events;
+
+public class TransactionEndEvent {
+}
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TransationStartEvent.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TransationStartEvent.java
new file mode 100644
index 0000000..54858c6
--- /dev/null
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TransationStartEvent.java
@@ -0,0 +1,4 @@
+package org.apache.servicecomb.saga.omega.transaction.tcc.events;
+
+public class TransationStartEvent {
+}
[incubator-servicecomb-saga] 02/05: SCB-817 Added TCC events in
Omega part (WIP)
Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
ningjiang pushed a commit to branch SCB-665
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-saga.git
commit 0c1663454afb885308c0b035a918589204c64256
Author: Willem Jiang <ji...@huawei.com>
AuthorDate: Thu Aug 16 10:44:06 2018 +0800
SCB-817 Added TCC events in Omega part (WIP)
---
.../saga/omega/context/annotations/TccStart.java | 7 +++
.../annotations/{TCC.java => Participate.java} | 14 ++---
.../saga/omega/transaction/tcc/TccAspect.java | 48 ---------------
.../saga/omega/transaction/tcc/TccInterceptor.java | 4 --
.../transaction/tcc/TccParticipatorAspect.java | 68 ++++++++++++++++++++++
.../tcc/TccStartAnnotationProcessor.java | 6 +-
.../saga/omega/transaction/tcc/TccStartAspect.java | 7 ++-
.../omega/transaction/tcc/events/CancelEvent.java | 20 -------
.../omega/transaction/tcc/events/ConfirmEvent.java | 20 -------
.../omega/transaction/tcc/events/TccEndEvent.java | 14 +++++
.../transaction/tcc/events/TccStartEvent.java | 25 ++++++++
.../tcc/events/TransactionEndEvent.java | 4 --
.../tcc/events/TransationStartEvent.java | 4 --
13 files changed, 129 insertions(+), 112 deletions(-)
diff --git a/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/annotations/TccStart.java b/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/annotations/TccStart.java
index c9154f9..6c8afd2 100644
--- a/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/annotations/TccStart.java
+++ b/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/annotations/TccStart.java
@@ -12,4 +12,11 @@ import java.lang.annotation.Target;
@Retention(RUNTIME)
@Target(METHOD)
public @interface TccStart {
+ /**
+ * TCC timeout, in seconds. <br>
+ * Default value is 0, which means never timeout.
+ *
+ * @return
+ */
+ int timeout() default 0;
}
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/annotations/TCC.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/annotations/Participate.java
similarity index 79%
rename from omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/annotations/TCC.java
rename to omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/annotations/Participate.java
index a095978..8351076 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/annotations/TCC.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/annotations/Participate.java
@@ -25,22 +25,22 @@ import java.lang.annotation.Target;
@Target({ElementType.METHOD})
/**
* Indicates the annotated method will start a sub-transaction. <br>
- * A <code>@TCC</code> method should satisfy below requirements:
+ * A <code>@Participate</code> method should satisfy below requirements:
* <ol>
* <li>all parameters are serialized</li>
* <li>is idempotent</li>
- * <li>the object instance which @TCC method resides in should be stateless</li>
+ * <li>the object instance which @Participate method resides in should be stateless</li>
* </ol>
*/
-public @interface TCC {
+public @interface Participate {
/**
* Confirm method name.<br>
* A confirm method should satisfy below requirements:
* <ol>
- * <li>has same parameter list as @TCC method's</li>
+ * <li>has same parameter list as @Participate method's</li>
* <li>all parameters are serialized</li>
* <li>is idempotent</li>
- * <li>be in the same class as @TCC method is in</li>
+ * <li>be in the same class as @Participate method is in</li>
* </ol>
*
* @return
@@ -51,10 +51,10 @@ public @interface TCC {
* Cancel method name.<br>
* A cancel method should satisfy below requirements:
* <ol>
- * <li>has same parameter list as @TCC method's</li>
+ * <li>has same parameter list as @Participate method's</li>
* <li>all parameters are serialized</li>
* <li>is idempotent</li>
- * <li>be in the same class as @TCC method is in</li>
+ * <li>be in the same class as @Participate method is in</li>
* </ol>
*
* @return
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccAspect.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccAspect.java
deleted file mode 100644
index 173cb78..0000000
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccAspect.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package org.apache.servicecomb.saga.omega.transaction.tcc;
-
-import java.lang.invoke.MethodHandles;
-import java.lang.reflect.Method;
-
-import org.apache.servicecomb.saga.omega.context.OmegaContext;
-import org.apache.servicecomb.saga.omega.transaction.CompensableInterceptor;
-import org.apache.servicecomb.saga.omega.transaction.MessageSender;
-import org.apache.servicecomb.saga.omega.transaction.RecoveryPolicy;
-import org.apache.servicecomb.saga.omega.transaction.RecoveryPolicyFactory;
-import org.apache.servicecomb.saga.omega.transaction.annotations.Compensable;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.aspectj.lang.annotation.Around;
-import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.reflect.MethodSignature;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@Aspect
-public class TccAspect {
- private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
- private final OmegaContext context;
-
- private final CompensableInterceptor interceptor;
-
- public TccAspect(MessageSender sender, OmegaContext context) {
- this.context = context;
- this.interceptor = new CompensableInterceptor(context, sender);
- }
-
- @Around("execution(@org.apache.servicecomb.saga.omega.transaction.annotations.Compensable * *(..)) && @annotation(compensable)")
- Object advise(ProceedingJoinPoint joinPoint, Compensable compensable) throws Throwable {
- Method method = ((MethodSignature) joinPoint.getSignature()).getMethod();
- String localTxId = context.localTxId();
- context.newLocalTxId();
- LOG.debug("Updated context {} for compensable method {} ", context, method.toString());
-
- int retries = compensable.retries();
- RecoveryPolicy recoveryPolicy = RecoveryPolicyFactory.getRecoveryPolicy(retries);
- try {
- return recoveryPolicy.apply(joinPoint, compensable, interceptor, context, localTxId, retries);
- } finally {
- context.setLocalTxId(localTxId);
- LOG.debug("Restored context back to {}", context);
- }
- }
-}
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccInterceptor.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccInterceptor.java
deleted file mode 100644
index 5ada269..0000000
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccInterceptor.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package org.apache.servicecomb.saga.omega.transaction.tcc;
-
-public class TccInterceptor {
-}
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccParticipatorAspect.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccParticipatorAspect.java
new file mode 100644
index 0000000..02adac2
--- /dev/null
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccParticipatorAspect.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.saga.omega.transaction.tcc;
+
+import java.lang.invoke.MethodHandles;
+import java.lang.reflect.Method;
+
+import org.apache.servicecomb.saga.omega.context.OmegaContext;
+import org.apache.servicecomb.saga.omega.transaction.MessageSender;
+import org.apache.servicecomb.saga.omega.transaction.OmegaException;
+import org.apache.servicecomb.saga.omega.transaction.RecoveryPolicy;
+import org.apache.servicecomb.saga.omega.transaction.RecoveryPolicyFactory;
+import org.apache.servicecomb.saga.omega.transaction.annotations.Compensable;
+import org.apache.servicecomb.saga.omega.transaction.annotations.Participate;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Aspect
+public class TccParticipatorAspect {
+ private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+ private final OmegaContext context;
+
+ public TccParticipatorAspect(MessageSender sender, OmegaContext context) {
+ this.context = context;
+ }
+
+ @Around("execution(@org.apache.servicecomb.saga.omega.transaction.annotations.Participate * *(..)) && @annotation(participate)")
+ Object advise(ProceedingJoinPoint joinPoint, Participate participate) throws Throwable {
+ Method method = ((MethodSignature) joinPoint.getSignature()).getMethod();
+ String localTxId = context.localTxId();
+ String cancelMethod = participate.cancelMethod();
+
+ context.newLocalTxId();
+ LOG.debug("Updated context {} for participate method {} ", context, method.toString());
+
+ try {
+ Object result = joinPoint.proceed();
+ // Send the participate message back
+ LOG.debug("Participate Transaction with context {} has finished.", context);
+
+ return result;
+ } catch (Throwable throwable) {
+ // Now we don't handle the error message
+ LOG.error("Participate Transaction with context {} failed.", context, throwable);
+ throw throwable;
+ }
+ }
+}
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccStartAnnotationProcessor.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccStartAnnotationProcessor.java
index 3e708cd..b38d876 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccStartAnnotationProcessor.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccStartAnnotationProcessor.java
@@ -33,14 +33,16 @@ public class TccStartAnnotationProcessor implements EventAwareInterceptor {
@Override
public void postIntercept(String parentTxId, String compensationMethod) {
- AlphaResponse response = sender.send(new SagaEndedEvent(omegaContext.globalTxId(), omegaContext.localTxId()));
+ // Send the confirm event
+ /*AlphaResponse response = sender.send(new SagaEndedEvent(omegaContext.globalTxId(), omegaContext.localTxId()));
if (response.aborted()) {
throw new OmegaException("transaction " + parentTxId + " is aborted");
- }
+ }*/
}
@Override
public void onError(String parentTxId, String compensationMethod, Throwable throwable) {
+ // Send the cancel event
String globalTxId = omegaContext.globalTxId();
sender.send(new TxAbortedEvent(globalTxId, omegaContext.localTxId(), null, compensationMethod, throwable));
}
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccStartAspect.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccStartAspect.java
index 5b380db..c8b7936 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccStartAspect.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/TccStartAspect.java
@@ -5,6 +5,7 @@ import java.lang.reflect.Method;
import org.apache.servicecomb.saga.omega.context.OmegaContext;
import org.apache.servicecomb.saga.omega.context.annotations.SagaStart;
+import org.apache.servicecomb.saga.omega.context.annotations.TccStart;
import org.apache.servicecomb.saga.omega.transaction.MessageSender;
import org.apache.servicecomb.saga.omega.transaction.OmegaException;
import org.aspectj.lang.ProceedingJoinPoint;
@@ -27,12 +28,12 @@ public class TccStartAspect {
this.tccStartAnnotationProcessor = new TccStartAnnotationProcessor(context, sender);
}
- @Around("execution(@org.apache.servicecomb.saga.omega.context.annotations.TccStart * *(..)) && @annotation(sagaStart)")
- Object advise(ProceedingJoinPoint joinPoint, SagaStart sagaStart) throws Throwable {
+ @Around("execution(@org.apache.servicecomb.saga.omega.context.annotations.TccStart * *(..)) && @annotation(tccStart)")
+ Object advise(ProceedingJoinPoint joinPoint, TccStart tccStart) throws Throwable {
initializeOmegaContext();
Method method = ((MethodSignature) joinPoint.getSignature()).getMethod();
- tccStartAnnotationProcessor.preIntercept(context.globalTxId(), method.toString(), sagaStart.timeout(), "", 0);
+ tccStartAnnotationProcessor.preIntercept(context.globalTxId(), method.toString(), tccStart.timeout(), "", 0);
LOG.debug("Initialized context {} before execution of method {}", context, method.toString());
try {
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/CancelEvent.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/CancelEvent.java
deleted file mode 100644
index 7659812..0000000
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/CancelEvent.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.servicecomb.saga.omega.transaction.tcc.events;
-
-public class CancelEvent {
-}
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/ConfirmEvent.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/ConfirmEvent.java
deleted file mode 100644
index f01675b..0000000
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/ConfirmEvent.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.servicecomb.saga.omega.transaction.tcc.events;
-
-public class ConfirmEvent {
-}
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TccEndEvent.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TccEndEvent.java
new file mode 100644
index 0000000..1022aee
--- /dev/null
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TccEndEvent.java
@@ -0,0 +1,14 @@
+package org.apache.servicecomb.saga.omega.transaction.tcc.events;
+
+public class TccEndEvent {
+ private final String globalTxId;
+ private final String localTxId;
+ private final String parentTxId;
+
+
+ public TccEndEvent(String globalTxId, String localTxId, String parentTxId) {
+ this.globalTxId = globalTxId;
+ this.localTxId = localTxId;
+ this.parentTxId = parentTxId;
+ }
+}
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TccStartEvent.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TccStartEvent.java
new file mode 100644
index 0000000..c94dbca
--- /dev/null
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TccStartEvent.java
@@ -0,0 +1,25 @@
+package org.apache.servicecomb.saga.omega.transaction.tcc.events;
+
+public class TccStartEvent {
+ private final String globalTxId;
+ private final String localTxId;
+ private final String parentTxId;
+
+ public String getGlobalTxId() {
+ return globalTxId;
+ }
+
+ public String getLocalTxId() {
+ return localTxId;
+ }
+
+ public String getParentTxId() {
+ return parentTxId;
+ }
+
+ public TccStartEvent(String globalTxId, String localTxId, String parentTxId) {
+ this.globalTxId = globalTxId;
+ this.localTxId = localTxId;
+ this.parentTxId = parentTxId;
+ }
+}
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TransactionEndEvent.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TransactionEndEvent.java
deleted file mode 100644
index 9613602..0000000
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TransactionEndEvent.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package org.apache.servicecomb.saga.omega.transaction.tcc.events;
-
-public class TransactionEndEvent {
-}
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TransationStartEvent.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TransationStartEvent.java
deleted file mode 100644
index 54858c6..0000000
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/events/TransationStartEvent.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package org.apache.servicecomb.saga.omega.transaction.tcc.events;
-
-public class TransationStartEvent {
-}
[incubator-servicecomb-saga] 03/05: SCB-817 Updated the
pack-contracts protocal for TCC
Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
ningjiang pushed a commit to branch SCB-665
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-saga.git
commit 277ff27ef353f650a1f543b8fd77f64ac0c035eb
Author: Willem Jiang <ji...@huawei.com>
AuthorDate: Thu Aug 16 10:52:19 2018 +0800
SCB-817 Updated the pack-contracts protocal for TCC
---
.../proto/{GrpcTxEvent.proto => GrpcCommon.proto} | 33 +----------------
.../{GrpcTxEvent.proto => GrpcTccEvent.proto} | 43 ++++++++++++----------
.../src/main/proto/GrpcTxEvent.proto | 11 +-----
3 files changed, 26 insertions(+), 61 deletions(-)
diff --git a/pack-contracts/pack-contract-grpc/src/main/proto/GrpcTxEvent.proto b/pack-contracts/pack-contract-grpc/src/main/proto/GrpcCommon.proto
similarity index 58%
copy from pack-contracts/pack-contract-grpc/src/main/proto/GrpcTxEvent.proto
copy to pack-contracts/pack-contract-grpc/src/main/proto/GrpcCommon.proto
index d2c6f77..40a8db7 100644
--- a/pack-contracts/pack-contract-grpc/src/main/proto/GrpcTxEvent.proto
+++ b/pack-contracts/pack-contract-grpc/src/main/proto/GrpcCommon.proto
@@ -19,15 +19,8 @@ syntax = "proto3";
option java_multiple_files = true;
option java_package = "org.apache.servicecomb.saga.pack.contract.grpc";
-option java_outer_classname = "TxEventProto";
-service TxEventService {
- rpc OnConnected (GrpcServiceConfig) returns (stream GrpcCompensateCommand) {
- }
- rpc OnTxEvent (GrpcTxEvent) returns (GrpcAck) {}
- rpc OnDisconnected (GrpcServiceConfig) returns (GrpcAck) {
- }
-}
+// Define the common structs which could be use for TccEventService and SagaEventService
message GrpcServiceConfig {
string serviceName = 1;
@@ -37,27 +30,3 @@ message GrpcServiceConfig {
message GrpcAck {
bool aborted = 1;
}
-
-message GrpcTxEvent {
- int64 timestamp = 1;
- string globalTxId = 2;
- string localTxId = 3;
- string parentTxId = 4;
- string type = 5;
- string compensationMethod = 6;
- bytes payloads = 7;
- string serviceName = 8;
- string instanceId = 9;
- int32 timeout = 10;
- int32 retries = 11;
- string retryMethod = 12;
-}
-
-message GrpcCompensateCommand {
- string globalTxId = 1;
- string localTxId = 2;
- string parentTxId = 3;
- string compensationMethod = 4;
- bytes payloads = 5;
-}
-
diff --git a/pack-contracts/pack-contract-grpc/src/main/proto/GrpcTxEvent.proto b/pack-contracts/pack-contract-grpc/src/main/proto/GrpcTccEvent.proto
similarity index 60%
copy from pack-contracts/pack-contract-grpc/src/main/proto/GrpcTxEvent.proto
copy to pack-contracts/pack-contract-grpc/src/main/proto/GrpcTccEvent.proto
index d2c6f77..1eba5e5 100644
--- a/pack-contracts/pack-contract-grpc/src/main/proto/GrpcTxEvent.proto
+++ b/pack-contracts/pack-contract-grpc/src/main/proto/GrpcTccEvent.proto
@@ -19,45 +19,48 @@ syntax = "proto3";
option java_multiple_files = true;
option java_package = "org.apache.servicecomb.saga.pack.contract.grpc";
-option java_outer_classname = "TxEventProto";
+option java_outer_classname = "TccEventProto";
-service TxEventService {
- rpc OnConnected (GrpcServiceConfig) returns (stream GrpcCompensateCommand) {
+import "GrpcCommon.proto";
+
+service TccEventService {
+ rpc participate(GrpcParticipateEvent) returns (GrpcAck) {}
+ rpc OnConnected (GrpcServiceConfig) returns (stream GrpcCordinateCommand) {
}
- rpc OnTxEvent (GrpcTxEvent) returns (GrpcAck) {}
+ rpc OnTransactionStarted (GrpcTransactionStartedEvent) returns (GrpcAck) {}
+ rpc OnTransactionEnded (GrpcTransactionEndedEvent) returns (GrpcAck) {}
rpc OnDisconnected (GrpcServiceConfig) returns (GrpcAck) {
}
}
-message GrpcServiceConfig {
- string serviceName = 1;
- string instanceId = 2;
+message GrpcTransactionStartedEvent {
+ int64 timestamp = 1;
+ string globalTxId = 2;
+ string localTxId = 3;
+ string parentTxId = 4;
}
-message GrpcAck {
- bool aborted = 1;
+message GrpcParticipateEvent {
+ int64 timestamp = 1;
+ string globalTxId = 2;
+ string localTxId = 3;
+ string parentTxId = 4;
+ string confirmMethod = 6;
+ string cancelMethod = 7;
}
-message GrpcTxEvent {
+message GrpcTransactionEndedEvent {
int64 timestamp = 1;
string globalTxId = 2;
string localTxId = 3;
string parentTxId = 4;
string type = 5;
- string compensationMethod = 6;
- bytes payloads = 7;
- string serviceName = 8;
- string instanceId = 9;
- int32 timeout = 10;
- int32 retries = 11;
- string retryMethod = 12;
}
-message GrpcCompensateCommand {
+message GrpcCordinateCommand {
string globalTxId = 1;
string localTxId = 2;
string parentTxId = 3;
- string compensationMethod = 4;
- bytes payloads = 5;
+ string type = 4;
}
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 d2c6f77..f037b4f 100644
--- a/pack-contracts/pack-contract-grpc/src/main/proto/GrpcTxEvent.proto
+++ b/pack-contracts/pack-contract-grpc/src/main/proto/GrpcTxEvent.proto
@@ -21,6 +21,8 @@ option java_multiple_files = true;
option java_package = "org.apache.servicecomb.saga.pack.contract.grpc";
option java_outer_classname = "TxEventProto";
+import "GrpcCommon.proto";
+
service TxEventService {
rpc OnConnected (GrpcServiceConfig) returns (stream GrpcCompensateCommand) {
}
@@ -29,15 +31,6 @@ service TxEventService {
}
}
-message GrpcServiceConfig {
- string serviceName = 1;
- string instanceId = 2;
-}
-
-message GrpcAck {
- bool aborted = 1;
-}
-
message GrpcTxEvent {
int64 timestamp = 1;
string globalTxId = 2;
[incubator-servicecomb-saga] 05/05: SCB-817 Updated the grpc file
of TccEventService
Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
ningjiang pushed a commit to branch SCB-665
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-saga.git
commit 4efa3a96c3bb0923c9d6db008d4a9e5cdb83da4f
Author: Willem Jiang <ji...@huawei.com>
AuthorDate: Mon Aug 20 19:10:07 2018 +0800
SCB-817 Updated the grpc file of TccEventService
---
.../src/main/proto/GrpcTccEvent.proto | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/pack-contracts/pack-contract-grpc/src/main/proto/GrpcTccEvent.proto b/pack-contracts/pack-contract-grpc/src/main/proto/GrpcTccEvent.proto
index 1eba5e5..9e1752f 100644
--- a/pack-contracts/pack-contract-grpc/src/main/proto/GrpcTccEvent.proto
+++ b/pack-contracts/pack-contract-grpc/src/main/proto/GrpcTccEvent.proto
@@ -24,23 +24,23 @@ option java_outer_classname = "TccEventProto";
import "GrpcCommon.proto";
service TccEventService {
- rpc participate(GrpcParticipateEvent) returns (GrpcAck) {}
- rpc OnConnected (GrpcServiceConfig) returns (stream GrpcCordinateCommand) {
+ rpc OnConnected (GrpcServiceConfig) returns (stream GrpcTccCordinateCommand) {
}
- rpc OnTransactionStarted (GrpcTransactionStartedEvent) returns (GrpcAck) {}
- rpc OnTransactionEnded (GrpcTransactionEndedEvent) returns (GrpcAck) {}
+ rpc participate(GrpcTccParticipateEvent) returns (GrpcAck) {}
+ rpc OnTccTransactionStarted (GrpcTccTransactionStartedEvent) returns (GrpcAck) {}
+ rpc OnTccTransactionEnded (GrpcTccTransactionEndedEvent) returns (GrpcAck) {}
rpc OnDisconnected (GrpcServiceConfig) returns (GrpcAck) {
}
}
-message GrpcTransactionStartedEvent {
+message GrpcTccTransactionStartedEvent {
int64 timestamp = 1;
string globalTxId = 2;
string localTxId = 3;
string parentTxId = 4;
}
-message GrpcParticipateEvent {
+message GrpcTccParticipateEvent {
int64 timestamp = 1;
string globalTxId = 2;
string localTxId = 3;
@@ -49,7 +49,7 @@ message GrpcParticipateEvent {
string cancelMethod = 7;
}
-message GrpcTransactionEndedEvent {
+message GrpcTccTransactionEndedEvent {
int64 timestamp = 1;
string globalTxId = 2;
string localTxId = 3;
@@ -57,10 +57,10 @@ message GrpcTransactionEndedEvent {
string type = 5;
}
-message GrpcCordinateCommand {
+message GrpcTccCordinateCommand {
string globalTxId = 1;
string localTxId = 2;
string parentTxId = 3;
- string type = 4;
+ string method = 4;
}