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 2019/12/31 07:08:41 UTC
[servicecomb-pack] branch master updated: Revert "SCB-1695 Add
attribute mode to @Compensable annotation"
This is an automated email from the ASF dual-hosted git repository.
ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git
The following commit(s) were added to refs/heads/master by this push:
new 133a2fa Revert "SCB-1695 Add attribute mode to @Compensable annotation"
133a2fa is described below
commit 133a2fa7247b2ba00a380762a38369849390560e
Author: Lei Zhang <zh...@apache.org>
AuthorDate: Tue Dec 31 13:54:21 2019 +0800
Revert "SCB-1695 Add attribute mode to @Compensable annotation"
This reverts commit 898e1ee5a128590d6a3f082fa23f29407082c48f.
---
docs/upgrade_guide/0.6.0-upgrade-guide.md | 5 -----
docs/upgrade_guide/0.6.0-upgrade-guide_zh.md | 6 ------
.../tests/explicitcontext/GreetingService.java | 3 +--
.../tests/resttemplate/GreetingService.java | 3 +--
.../spring/MisconfiguredRetriesService.java | 3 +--
.../spring/TransactionalUserService.java | 3 +--
.../omega/transaction/RecoveryPolicyFactory.java | 12 +++++-------
.../pack/omega/transaction/TransactionAspect.java | 5 +++--
.../omega/transaction/annotations/Compensable.java | 9 ---------
.../transaction/annotations/CompensableMode.java | 22 ----------------------
.../omega/transaction/ForwardRecoveryTest.java | 3 ---
.../omega/transaction/TransactionAspectTest.java | 3 ---
12 files changed, 12 insertions(+), 65 deletions(-)
diff --git a/docs/upgrade_guide/0.6.0-upgrade-guide.md b/docs/upgrade_guide/0.6.0-upgrade-guide.md
index 4ca1f99..0b1afd1 100644
--- a/docs/upgrade_guide/0.6.0-upgrade-guide.md
+++ b/docs/upgrade_guide/0.6.0-upgrade-guide.md
@@ -8,8 +8,3 @@ Rename @Compensable annotation property `retries` to `forwardRetries`
Rename @Compensable annotation property `timeout` to `forwardTimeout`
-Add attribute `mode` to @Compensable annotation, There are three options for attribute values
-
-- forward, it will use the forward recovery
-- reverse, it will use the reverse recovery (default)
-- combine, it will use the first forward then reverse
\ No newline at end of file
diff --git a/docs/upgrade_guide/0.6.0-upgrade-guide_zh.md b/docs/upgrade_guide/0.6.0-upgrade-guide_zh.md
index d089c9e..4d0ad7d 100644
--- a/docs/upgrade_guide/0.6.0-upgrade-guide_zh.md
+++ b/docs/upgrade_guide/0.6.0-upgrade-guide_zh.md
@@ -8,9 +8,3 @@
@Compensable 注解的 `timeout` 属性改名为 `forwardTimeout`
-@Compensable 增加 `mode` 属性 ,可选属性值为以下三种
-
-- forward 正向补偿
-- reverse 反向补偿(默认)
-- combine 组合补偿(先正向补偿,后反向补偿)
-
diff --git a/integration-tests/explicit-transaction-context-tests/src/test/java/org/apache/servicecomb/pack/integration/tests/explicitcontext/GreetingService.java b/integration-tests/explicit-transaction-context-tests/src/test/java/org/apache/servicecomb/pack/integration/tests/explicitcontext/GreetingService.java
index 7957f45..782412f 100644
--- a/integration-tests/explicit-transaction-context-tests/src/test/java/org/apache/servicecomb/pack/integration/tests/explicitcontext/GreetingService.java
+++ b/integration-tests/explicit-transaction-context-tests/src/test/java/org/apache/servicecomb/pack/integration/tests/explicitcontext/GreetingService.java
@@ -21,7 +21,6 @@ import java.util.Queue;
import org.apache.servicecomb.pack.omega.context.TransactionContext;
import org.apache.servicecomb.pack.omega.transaction.annotations.Compensable;
-import org.apache.servicecomb.pack.omega.transaction.annotations.CompensableMode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -64,7 +63,7 @@ class GreetingService {
return appendMessage("My bad, please take the window instead, " + name);
}
- @Compensable(mode = CompensableMode.forward, forwardRetries = MAX_COUNT, compensationMethod = "close")
+ @Compensable(forwardRetries = MAX_COUNT, compensationMethod = "close")
String open(String name, int retries, TransactionContext transactionContext) {
if (failedCount < retries) {
failedCount += 1;
diff --git a/integration-tests/pack-tests/src/test/java/org/apache/servicecomb/pack/integration/tests/resttemplate/GreetingService.java b/integration-tests/pack-tests/src/test/java/org/apache/servicecomb/pack/integration/tests/resttemplate/GreetingService.java
index f55677a..e3758bb 100644
--- a/integration-tests/pack-tests/src/test/java/org/apache/servicecomb/pack/integration/tests/resttemplate/GreetingService.java
+++ b/integration-tests/pack-tests/src/test/java/org/apache/servicecomb/pack/integration/tests/resttemplate/GreetingService.java
@@ -20,7 +20,6 @@ package org.apache.servicecomb.pack.integration.tests.resttemplate;
import java.util.Queue;
import org.apache.servicecomb.pack.omega.transaction.annotations.Compensable;
-import org.apache.servicecomb.pack.omega.transaction.annotations.CompensableMode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -63,7 +62,7 @@ class GreetingService {
return appendMessage("My bad, please take the window instead, " + name);
}
- @Compensable(mode = CompensableMode.forward, forwardRetries = MAX_COUNT, compensationMethod = "close")
+ @Compensable(forwardRetries = MAX_COUNT, compensationMethod = "close")
String open(String name, int retries) {
if (failedCount < retries) {
failedCount += 1;
diff --git a/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/MisconfiguredRetriesService.java b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/MisconfiguredRetriesService.java
index 2504626..f95d99f 100644
--- a/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/MisconfiguredRetriesService.java
+++ b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/MisconfiguredRetriesService.java
@@ -18,7 +18,6 @@
package org.apache.servicecomb.pack.omega.transaction.spring;
import org.apache.servicecomb.pack.omega.transaction.annotations.Compensable;
-import org.apache.servicecomb.pack.omega.transaction.annotations.CompensableMode;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Component;
@@ -26,7 +25,7 @@ import org.springframework.stereotype.Component;
@Component
class MisconfiguredRetriesService {
- @Compensable(mode = CompensableMode.forward, forwardRetries = -2)
+ @Compensable(forwardRetries = -2)
void doSomething() {
}
}
diff --git a/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/TransactionalUserService.java b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/TransactionalUserService.java
index a7b647b..08030a0 100644
--- a/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/TransactionalUserService.java
+++ b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/TransactionalUserService.java
@@ -18,7 +18,6 @@
package org.apache.servicecomb.pack.omega.transaction.spring;
import org.apache.servicecomb.pack.omega.transaction.annotations.Compensable;
-import org.apache.servicecomb.pack.omega.transaction.annotations.CompensableMode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@@ -52,7 +51,7 @@ public class TransactionalUserService {
userRepository.delete(user);
}
- @Compensable(mode = CompensableMode.forward, forwardRetries = 2, compensationMethod = "delete")
+ @Compensable(forwardRetries = 2, compensationMethod = "delete")
public User add(User user, int count) {
if (this.count < count) {
this.count += 1;
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/RecoveryPolicyFactory.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/RecoveryPolicyFactory.java
index e84b5d3..33098d9 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/RecoveryPolicyFactory.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/RecoveryPolicyFactory.java
@@ -17,19 +17,17 @@
package org.apache.servicecomb.pack.omega.transaction;
-import org.apache.servicecomb.pack.omega.transaction.annotations.CompensableMode;
-
public class RecoveryPolicyFactory {
private static final RecoveryPolicy DEFAULT_RECOVERY = new DefaultRecovery();
private static final RecoveryPolicy FORWARD_RECOVERY = new ForwardRecovery();
/**
- * If mode is reverse, it will use the reverse recovery
- * If mode is forward, it will use the forward recovery
- * If mode is combine, it will use the first forward then reverse
+ * If retries == 0, use the default recovery to execute only once.
+ * If retries > 0, it will use the forward recovery and retry the given times at most.
+ * If retries == -1, it will use the forward recovery and retry forever until interrupted.
*/
- static RecoveryPolicy getRecoveryPolicy(CompensableMode mode) {
- return mode == CompensableMode.forward ? FORWARD_RECOVERY : DEFAULT_RECOVERY;
+ static RecoveryPolicy getRecoveryPolicy(int retries) {
+ return retries != 0 ? FORWARD_RECOVERY : DEFAULT_RECOVERY;
}
}
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/TransactionAspect.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/TransactionAspect.java
index e280b1c..826480d 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/TransactionAspect.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/TransactionAspect.java
@@ -63,9 +63,10 @@ public class TransactionAspect extends TransactionContextHelper {
context.newLocalTxId();
LOG.debug("Updated context {} for compensable method {} ", context, method.toString());
- RecoveryPolicy recoveryPolicy = RecoveryPolicyFactory.getRecoveryPolicy(compensable.mode());
+ int retries = compensable.forwardRetries();
+ RecoveryPolicy recoveryPolicy = RecoveryPolicyFactory.getRecoveryPolicy(retries);
try {
- return recoveryPolicy.apply(joinPoint, compensable, interceptor, context, localTxId, compensable.forwardRetries());
+ 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/pack/omega/transaction/annotations/Compensable.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/annotations/Compensable.java
index 7bc7f13..8ed5081 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/annotations/Compensable.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/annotations/Compensable.java
@@ -73,13 +73,4 @@ public @interface Compensable {
*/
int forwardTimeout() default 0;
- /**
- * Compensation mode. <br>
- * Default value is reverse
- * value is forward, it will use the forward recovery
- * value is reverse, it will use the reverse recovery
- * value is combine, first forward then reverse
- * @return compensable mode enum value
- */
- CompensableMode mode() default CompensableMode.reverse;
}
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/annotations/CompensableMode.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/annotations/CompensableMode.java
deleted file mode 100644
index 9ec563a..0000000
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/annotations/CompensableMode.java
+++ /dev/null
@@ -1,22 +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.pack.omega.transaction.annotations;
-
-public enum CompensableMode {
- forward, reverse, combine
-}
diff --git a/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/ForwardRecoveryTest.java b/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/ForwardRecoveryTest.java
index 753780e..1d16c93 100644
--- a/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/ForwardRecoveryTest.java
+++ b/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/ForwardRecoveryTest.java
@@ -40,7 +40,6 @@ import org.apache.servicecomb.pack.contract.grpc.ServerMeta;
import org.apache.servicecomb.pack.omega.context.IdGenerator;
import org.apache.servicecomb.pack.omega.context.OmegaContext;
import org.apache.servicecomb.pack.omega.transaction.annotations.Compensable;
-import org.apache.servicecomb.pack.omega.transaction.annotations.CompensableMode;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.reflect.MethodSignature;
import org.junit.Before;
@@ -145,7 +144,6 @@ public class ForwardRecoveryTest {
@Test
public void throwExceptionWhenRetryReachesMaximum() throws Throwable {
when(compensable.forwardRetries()).thenReturn(2);
- when(compensable.mode()).thenReturn(CompensableMode.forward);
when(joinPoint.proceed()).thenThrow(oops);
try {
@@ -168,7 +166,6 @@ public class ForwardRecoveryTest {
public void keepRetryingTillInterrupted() throws Throwable {
when(compensable.forwardRetries()).thenReturn(-1);
when(compensable.retryDelayInMilliseconds()).thenReturn(1000);
- when(compensable.mode()).thenReturn(CompensableMode.forward);
when(joinPoint.proceed()).thenThrow(oops);
Thread thread = new Thread(new Runnable() {
diff --git a/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/TransactionAspectTest.java b/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/TransactionAspectTest.java
index 4eb45e4..39a32c4 100644
--- a/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/TransactionAspectTest.java
+++ b/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/TransactionAspectTest.java
@@ -42,7 +42,6 @@ import org.apache.servicecomb.pack.omega.context.IdGenerator;
import org.apache.servicecomb.pack.omega.context.OmegaContext;
import org.apache.servicecomb.pack.omega.context.TransactionContextProperties;
import org.apache.servicecomb.pack.omega.transaction.annotations.Compensable;
-import org.apache.servicecomb.pack.omega.transaction.annotations.CompensableMode;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.reflect.MethodSignature;
import org.junit.Before;
@@ -311,7 +310,6 @@ public class TransactionAspectTest {
RuntimeException oops = new RuntimeException("oops");
when(joinPoint.proceed()).thenThrow(oops);
when(compensable.forwardRetries()).thenReturn(3);
- when(compensable.mode()).thenReturn(CompensableMode.forward);
try {
aspect.advise(joinPoint, compensable);
@@ -356,7 +354,6 @@ public class TransactionAspectTest {
RuntimeException oops = new RuntimeException("oops");
when(joinPoint.proceed()).thenThrow(oops).thenThrow(oops).thenReturn(null);
when(compensable.forwardRetries()).thenReturn(-1);
- when(compensable.mode()).thenReturn(CompensableMode.forward);
aspect.advise(joinPoint, compensable);