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);