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 2020/01/09 14:27:02 UTC

[servicecomb-pack] 02/03: SCB-1707 Add prefix 'forward' to parameter retries and timeout

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

commit 2259476a3c27c26273d9fada491679bcbeb0628f
Author: Lei Zhang <zh...@apache.org>
AuthorDate: Wed Jan 8 10:13:24 2020 +0800

    SCB-1707 Add prefix 'forward' to parameter retries and timeout
---
 .../pack/alpha/core/fsm/event/TxStartedEvent.java  | 14 ++++++------
 .../pack/alpha/fsm/domain/AddTxEventDomain.java    |  2 +-
 .../pack/alpha/server/GrpcTxEventEndpointImpl.java |  4 ++--
 .../alpha/server/fsm/GrpcSagaEventService.java     |  4 ++--
 .../pack/alpha/server/AlphaIntegrationTest.java    |  6 +++---
 .../server/AlphaIntegrationWithRandomPortTest.java |  6 +++---
 .../alpha/server/fsm/OmegaEventSagaSimulator.java  |  6 +++---
 .../ExplicitTransactionContextIT.java              | 25 ++++++++++------------
 .../grpc/saga/GrpcSagaClientMessageSender.java     |  8 ++-----
 .../grpc/saga/SagaLoadBalancedSenderTestBase.java  |  4 ++--
 .../spring/TransactionInterceptionTest.java        | 18 ++++++----------
 .../omega/transaction/AbstractRecoveryPolicy.java  |  8 +++----
 .../omega/transaction/CompensableInterceptor.java  |  4 ++--
 .../omega/transaction/EventAwareInterceptor.java   |  2 +-
 .../pack/omega/transaction/ForwardRecovery.java    | 10 ++++-----
 .../transaction/NoOpEventAwareInterceptor.java     |  2 +-
 .../pack/omega/transaction/RecoveryPolicy.java     |  2 +-
 .../omega/transaction/RecoveryPolicyFactory.java   |  4 ++--
 .../pack/omega/transaction/TransactionAspect.java  |  6 +++---
 .../pack/omega/transaction/TxEvent.java            | 12 +++++------
 .../pack/omega/transaction/TxStartedEvent.java     |  4 ++--
 .../transaction/CompensableInterceptorTest.java    |  6 +++---
 .../omega/transaction/DefaultRecoveryTest.java     |  6 +++---
 .../src/main/proto/GrpcTxEvent.proto               |  4 ++--
 24 files changed, 77 insertions(+), 90 deletions(-)

diff --git a/alpha/alpha-core/src/main/java/org/apache/servicecomb/pack/alpha/core/fsm/event/TxStartedEvent.java b/alpha/alpha-core/src/main/java/org/apache/servicecomb/pack/alpha/core/fsm/event/TxStartedEvent.java
index 4b6a64b..96630d1 100644
--- a/alpha/alpha-core/src/main/java/org/apache/servicecomb/pack/alpha/core/fsm/event/TxStartedEvent.java
+++ b/alpha/alpha-core/src/main/java/org/apache/servicecomb/pack/alpha/core/fsm/event/TxStartedEvent.java
@@ -24,7 +24,7 @@ public class TxStartedEvent extends TxEvent {
   private String compensationMethod;
   private byte[] payloads;
   private String retryMethod;
-  private int retries;
+  private int forwardRetries;
 
   public String getCompensationMethod() {
     return compensationMethod;
@@ -50,12 +50,12 @@ public class TxStartedEvent extends TxEvent {
     this.retryMethod = retryMethod;
   }
 
-  public int getRetries() {
-    return retries;
+  public int getForwardRetries() {
+    return forwardRetries;
   }
 
-  public void setRetries(int retries) {
-    this.retries = retries;
+  public void setForwardRetries(int forwardRetries) {
+    this.forwardRetries = forwardRetries;
   }
 
   public static Builder builder() {
@@ -110,8 +110,8 @@ public class TxStartedEvent extends TxEvent {
       return this;
     }
 
-    public Builder retries(int retries) {
-      txStartedEvent.setRetries(retries);
+    public Builder forwardRetries(int forwardRetries) {
+      txStartedEvent.setForwardRetries(forwardRetries);
       return this;
     }
 
diff --git a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/domain/AddTxEventDomain.java b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/domain/AddTxEventDomain.java
index 0e410a3..17b0d86 100644
--- a/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/domain/AddTxEventDomain.java
+++ b/alpha/alpha-fsm/src/main/java/org/apache/servicecomb/pack/alpha/fsm/domain/AddTxEventDomain.java
@@ -32,7 +32,7 @@ public class AddTxEventDomain implements DomainEvent {
     this.event = event;
     this.compensationMethod = event.getCompensationMethod();
     this.payloads = event.getPayloads();
-    this.retries = event.getRetries();
+    this.retries = event.getForwardRetries();
   }
 
   public TxState getState() {
diff --git a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/GrpcTxEventEndpointImpl.java b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/GrpcTxEventEndpointImpl.java
index e04a494..5cf1c4a 100644
--- a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/GrpcTxEventEndpointImpl.java
+++ b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/GrpcTxEventEndpointImpl.java
@@ -106,9 +106,9 @@ class GrpcTxEventEndpointImpl extends TxEventServiceImplBase {
         message.getParentTxId().isEmpty() ? null : message.getParentTxId(),
         message.getType(),
         message.getCompensationMethod(),
-        message.getTimeout(),
+        message.getForwardTimeout(),
         message.getRetryMethod(),
-        message.getRetries(),
+        message.getForwardRetries(),
         message.getPayloads().toByteArray()
     ));
 
diff --git a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/fsm/GrpcSagaEventService.java b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/fsm/GrpcSagaEventService.java
index dac6f21..79dac46 100644
--- a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/fsm/GrpcSagaEventService.java
+++ b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/fsm/GrpcSagaEventService.java
@@ -108,7 +108,7 @@ public class GrpcSagaEventService extends TxEventServiceImplBase {
           .instanceId(message.getInstanceId())
           .globalTxId(message.getGlobalTxId())
           .createTime(new Date())
-          .timeout(message.getTimeout()).build();
+          .timeout(message.getForwardTimeout()).build();
     } else if (message.getType().equals(EventType.SagaEndedEvent.name())) {
       event = org.apache.servicecomb.pack.alpha.core.fsm.event.SagaEndedEvent.builder()
           .serviceName(message.getServiceName())
@@ -137,7 +137,7 @@ public class GrpcSagaEventService extends TxEventServiceImplBase {
           .parentTxId(message.getParentTxId().isEmpty() ? null : message.getParentTxId())
           .compensationMethod(message.getCompensationMethod())
           .retryMethod(message.getRetryMethod())
-          .retries(message.getRetries())
+          .forwardRetries(message.getForwardRetries())
           .createTime(new Date())
           .payloads(message.getPayloads().toByteArray()).build();
     } else if (message.getType().equals(EventType.TxEndedEvent.name())) {
diff --git a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/AlphaIntegrationTest.java b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/AlphaIntegrationTest.java
index 09b268b..fabba6c 100644
--- a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/AlphaIntegrationTest.java
+++ b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/AlphaIntegrationTest.java
@@ -553,7 +553,7 @@ public class AlphaIntegrationTest {
       String compensationMethod,
       int timeout,
       String retryMethod,
-      int retries) {
+      int forwardRetries) {
 
     return GrpcTxEvent.newBuilder()
         .setServiceName(serviceName)
@@ -564,9 +564,9 @@ public class AlphaIntegrationTest {
         .setParentTxId(parentTxId == null ? "" : parentTxId)
         .setType(eventType.name())
         .setCompensationMethod(compensationMethod)
-        .setTimeout(timeout)
+        .setForwardTimeout(timeout)
         .setRetryMethod(retryMethod)
-        .setRetries(retries)
+        .setForwardRetries(forwardRetries)
         .setPayloads(ByteString.copyFrom(payloads))
         .build();
   }
diff --git a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/AlphaIntegrationWithRandomPortTest.java b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/AlphaIntegrationWithRandomPortTest.java
index 84f12f4..d4c44b6 100644
--- a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/AlphaIntegrationWithRandomPortTest.java
+++ b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/AlphaIntegrationWithRandomPortTest.java
@@ -535,7 +535,7 @@ public class AlphaIntegrationWithRandomPortTest {
       String compensationMethod,
       int timeout,
       String retryMethod,
-      int retries) {
+      int forwardRetries) {
 
     return GrpcTxEvent.newBuilder()
         .setServiceName(serviceName)
@@ -546,9 +546,9 @@ public class AlphaIntegrationWithRandomPortTest {
         .setParentTxId(parentTxId == null ? "" : parentTxId)
         .setType(eventType.name())
         .setCompensationMethod(compensationMethod)
-        .setTimeout(timeout)
+        .setForwardTimeout(timeout)
         .setRetryMethod(retryMethod)
-        .setRetries(retries)
+        .setForwardRetries(forwardRetries)
         .setPayloads(ByteString.copyFrom(payloads))
         .build();
   }
diff --git a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/fsm/OmegaEventSagaSimulator.java b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/fsm/OmegaEventSagaSimulator.java
index ae6717a..424dd66 100644
--- a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/fsm/OmegaEventSagaSimulator.java
+++ b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/fsm/OmegaEventSagaSimulator.java
@@ -255,7 +255,7 @@ public class OmegaEventSagaSimulator {
       String compensationMethod,
       int timeout,
       String retryMethod,
-      int retries) {
+      int forwardRetries) {
 
     return GrpcTxEvent.newBuilder()
         .setServiceName(serviceName)
@@ -266,9 +266,9 @@ public class OmegaEventSagaSimulator {
         .setParentTxId(parentTxId == null ? "" : parentTxId)
         .setType(eventType.name())
         .setCompensationMethod(compensationMethod)
-        .setTimeout(timeout)
+        .setForwardTimeout(timeout)
         .setRetryMethod(retryMethod)
-        .setRetries(retries)
+        .setForwardRetries(forwardRetries)
         .setPayloads(ByteString.copyFrom(payloads))
         .build();
   }
diff --git a/integration-tests/explicit-transaction-context-tests/src/test/java/org/apache/servicecomb/pack/integration/tests/explicitcontext/ExplicitTransactionContextIT.java b/integration-tests/explicit-transaction-context-tests/src/test/java/org/apache/servicecomb/pack/integration/tests/explicitcontext/ExplicitTransactionContextIT.java
index 4b752b9..dc2bf58 100644
--- a/integration-tests/explicit-transaction-context-tests/src/test/java/org/apache/servicecomb/pack/integration/tests/explicitcontext/ExplicitTransactionContextIT.java
+++ b/integration-tests/explicit-transaction-context-tests/src/test/java/org/apache/servicecomb/pack/integration/tests/explicitcontext/ExplicitTransactionContextIT.java
@@ -255,23 +255,22 @@ public class ExplicitTransactionContextIT {
     assertThat(entity.getStatusCode(), is(OK));
     assertThat(entity.getBody(), is("Greetings, eric; Welcome to visit the zoo, eric"));
 
-    await().atMost(10, SECONDS).until(() -> eventRepo.count() == 8);
+    await().atMost(10, SECONDS).until(() -> eventRepo.count() == 7);
 
     List<String> distinctGlobalTxIds = eventRepo.findDistinctGlobalTxId();
     assertThat(distinctGlobalTxIds.size(), greaterThanOrEqualTo(1));
 
     String globalTxId = distinctGlobalTxIds.get(0);
     List<TxEvent> events = eventRepo.findByGlobalTxIdOrderByCreationTime(globalTxId);
-    assertThat(events.size(), is(8));
+    assertThat(events.size(), is(7));
 
     assertThat(events.get(0).type(), is("SagaStartedEvent"));
     assertThat(events.get(1).type(), is("TxStartedEvent"));
     assertThat(events.get(2).type(), is("TxEndedEvent"));
     assertThat(events.get(3).type(), is("TxStartedEvent"));
-    assertThat(events.get(4).type(), is("TxAbortedEvent"));
-    assertThat(events.get(5).type(), is("TxStartedEvent"));
-    assertThat(events.get(6).type(), is("TxEndedEvent"));
-    assertThat(events.get(7).type(), is("SagaEndedEvent"));
+    assertThat(events.get(4).type(), is("TxStartedEvent"));
+    assertThat(events.get(5).type(), is("TxEndedEvent"));
+    assertThat(events.get(6).type(), is("SagaEndedEvent"));
 
     assertThat(compensatedMessages.isEmpty(), is(true));
   }
@@ -286,27 +285,25 @@ public class ExplicitTransactionContextIT {
 
     assertThat(entity.getStatusCode(), is(INTERNAL_SERVER_ERROR));
 
-    await().atMost(10, SECONDS).until(() -> eventRepo.count() == 12);
+    await().atMost(10, SECONDS).until(() -> eventRepo.count() == 10);
 
     List<String> distinctGlobalTxIds = eventRepo.findDistinctGlobalTxId();
     assertThat(distinctGlobalTxIds.size(), greaterThanOrEqualTo(1));
 
     String globalTxId = distinctGlobalTxIds.get(0);
     List<TxEvent> events = eventRepo.findByGlobalTxIdOrderByCreationTime(globalTxId);
-    assertThat(events.size(), is(12));
+    assertThat(events.size(), is(10));
 
     assertThat(events.get(0).type(), is("SagaStartedEvent"));
     assertThat(events.get(1).type(), is("TxStartedEvent"));
     assertThat(events.get(2).type(), is("TxEndedEvent"));
     assertThat(events.get(3).type(), is("TxStartedEvent"));
-    assertThat(events.get(4).type(), is("TxAbortedEvent"));
+    assertThat(events.get(4).type(), is("TxStartedEvent"));
     assertThat(events.get(5).type(), is("TxStartedEvent"));
     assertThat(events.get(6).type(), is("TxAbortedEvent"));
-    assertThat(events.get(7).type(), is("TxStartedEvent"));
-    assertThat(events.get(8).type(), is("TxAbortedEvent"));
-    // This event is for the whole saga event
-    assertThat(events.get(9).type(), is("TxAbortedEvent"));
-    assertThat(events.get(10).type(), is("TxCompensatedEvent"));
+    assertThat(events.get(7).type(), is("TxAbortedEvent"));
+    assertThat(events.get(8).type(), is("TxCompensatedEvent"));
+    assertThat(events.get(9).type(), is("SagaEndedEvent"));
 
     assertThat(compensatedMessages, Matchers.contains("Goodbye, " + GreetingController.TRESPASSER));
   }
diff --git a/omega/omega-connector/omega-connector-grpc/src/main/java/org/apache/servicecomb/pack/omega/connector/grpc/saga/GrpcSagaClientMessageSender.java b/omega/omega-connector/omega-connector-grpc/src/main/java/org/apache/servicecomb/pack/omega/connector/grpc/saga/GrpcSagaClientMessageSender.java
index 37996a0..60c9bf2 100644
--- a/omega/omega-connector/omega-connector-grpc/src/main/java/org/apache/servicecomb/pack/omega/connector/grpc/saga/GrpcSagaClientMessageSender.java
+++ b/omega/omega-connector/omega-connector-grpc/src/main/java/org/apache/servicecomb/pack/omega/connector/grpc/saga/GrpcSagaClientMessageSender.java
@@ -19,8 +19,6 @@ package org.apache.servicecomb.pack.omega.connector.grpc.saga;
 
 import com.google.protobuf.ByteString;
 import io.grpc.ManagedChannel;
-import io.grpc.stub.StreamObserver;
-import java.lang.invoke.MethodHandles;
 import org.apache.servicecomb.pack.contract.grpc.ServerMeta;
 import org.apache.servicecomb.pack.omega.connector.grpc.core.LoadBalanceContext;
 import org.apache.servicecomb.pack.omega.context.ServiceConfig;
@@ -37,8 +35,6 @@ import org.apache.servicecomb.pack.contract.grpc.GrpcTxEvent.Builder;
 import org.apache.servicecomb.pack.contract.grpc.TxEventServiceGrpc;
 import org.apache.servicecomb.pack.contract.grpc.TxEventServiceGrpc.TxEventServiceBlockingStub;
 import org.apache.servicecomb.pack.contract.grpc.TxEventServiceGrpc.TxEventServiceStub;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class GrpcSagaClientMessageSender implements SagaMessageSender {
 
@@ -113,10 +109,10 @@ public class GrpcSagaClientMessageSender implements SagaMessageSender {
         .setLocalTxId(event.localTxId())
         .setParentTxId(event.parentTxId() == null ? "" : event.parentTxId())
         .setType(event.type().name())
-        .setTimeout(event.timeout())
+        .setForwardTimeout(event.timeout())
         .setCompensationMethod(event.compensationMethod())
         .setRetryMethod(event.retryMethod() == null ? "" : event.retryMethod())
-        .setRetries(event.retries())
+        .setForwardRetries(event.forwardRetries())
         .setPayloads(payloads);
 
     return builder.build();
diff --git a/omega/omega-connector/omega-connector-grpc/src/test/java/org/apache/servicecomb/pack/omega/connector/grpc/saga/SagaLoadBalancedSenderTestBase.java b/omega/omega-connector/omega-connector-grpc/src/test/java/org/apache/servicecomb/pack/omega/connector/grpc/saga/SagaLoadBalancedSenderTestBase.java
index 2f19080..f2f05d6 100644
--- a/omega/omega-connector/omega-connector-grpc/src/test/java/org/apache/servicecomb/pack/omega/connector/grpc/saga/SagaLoadBalancedSenderTestBase.java
+++ b/omega/omega-connector/omega-connector-grpc/src/test/java/org/apache/servicecomb/pack/omega/connector/grpc/saga/SagaLoadBalancedSenderTestBase.java
@@ -171,9 +171,9 @@ public abstract class SagaLoadBalancedSenderTestBase {
           request.getLocalTxId(),
           request.getParentTxId(),
           request.getCompensationMethod(),
-          request.getTimeout(),
+          request.getForwardTimeout(),
           request.getRetryMethod(),
-          request.getRetries(),
+          request.getForwardRetries(),
           new String(request.getPayloads().toByteArray())));
 
       sleep();
diff --git a/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/TransactionInterceptionTest.java b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/TransactionInterceptionTest.java
index a5f3abf..81d79a1 100644
--- a/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/TransactionInterceptionTest.java
+++ b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/pack/omega/transaction/spring/TransactionInterceptionTest.java
@@ -203,19 +203,16 @@ public class TransactionInterceptionTest {
       fail("unexpected exception throw: " + e);
     }
 
-    assertThat(messages.size(), is(4));
+    assertThat(messages.size(), is(3));
 
     assertThat(messages.get(0),
         is(new TxStartedEvent(globalTxId, newLocalTxId, globalTxId, compensationMethod2, 0, retryMethod, 2, user, 1)
             .toString()));
 
-    String abortedEvent = messages.get(1);
-    assertThat(abortedEvent, allOf(containsString("TxAbortedEvent"), containsString("Retry harder")));
-
-    assertThat(messages.get(2),
+    assertThat(messages.get(1),
         is(new TxStartedEvent(globalTxId, newLocalTxId, globalTxId, compensationMethod2, 0, retryMethod, 1, user, 1)
             .toString()));
-    assertThat(messages.get(3),
+    assertThat(messages.get(2),
         is(new TxEndedEvent(globalTxId, newLocalTxId, globalTxId, compensationMethod2).toString()));
 
     assertThat(userRepository.count(), is(1L));
@@ -234,19 +231,16 @@ public class TransactionInterceptionTest {
       assertThat(e.getMessage(), is("Retry harder"));
     }
 
-    assertThat(messages.size(), is(4));
+    assertThat(messages.size(), is(3));
     assertThat(messages.get(0),
         is(new TxStartedEvent(globalTxId, newLocalTxId, globalTxId, compensationMethod2, 0, retryMethod, 2, user, 3)
             .toString()));
 
-    String abortedEvent1 = messages.get(1);
-    assertThat(abortedEvent1, allOf(containsString("TxAbortedEvent"), containsString("Retry harder")));
-
-    assertThat(messages.get(2),
+    assertThat(messages.get(1),
         is(new TxStartedEvent(globalTxId, newLocalTxId, globalTxId, compensationMethod2, 0, retryMethod, 1, user, 3)
             .toString()));
 
-    String abortedEvent2 = messages.get(3);
+    String abortedEvent2 = messages.get(2);
     assertThat(abortedEvent2, allOf(containsString("TxAbortedEvent"), containsString("Retry harder")));
 
     assertThat(userRepository.count(), is(0L));
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/AbstractRecoveryPolicy.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/AbstractRecoveryPolicy.java
index d38dec8..00f26ca 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/AbstractRecoveryPolicy.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/AbstractRecoveryPolicy.java
@@ -25,19 +25,19 @@ import org.aspectj.lang.ProceedingJoinPoint;
 public abstract class AbstractRecoveryPolicy implements RecoveryPolicy {
 
   public abstract Object applyTo(ProceedingJoinPoint joinPoint, Compensable compensable,
-      CompensableInterceptor interceptor, OmegaContext context, String parentTxId, int retries)
+      CompensableInterceptor interceptor, OmegaContext context, String parentTxId, int forwardRetries)
       throws Throwable;
 
   @Override
   public Object apply(ProceedingJoinPoint joinPoint, Compensable compensable,
-      CompensableInterceptor interceptor, OmegaContext context, String parentTxId, int retries)
+      CompensableInterceptor interceptor, OmegaContext context, String parentTxId, int forwardRetries)
       throws Throwable {
     Object result;
     if(compensable.forwardTimeout()>0){
       RecoveryPolicyTimeoutWrapper wrapper = new RecoveryPolicyTimeoutWrapper(this);
-      result = wrapper.applyTo(joinPoint, compensable, interceptor, context, parentTxId, retries);
+      result = wrapper.applyTo(joinPoint, compensable, interceptor, context, parentTxId, forwardRetries);
     } else {
-      result = this.applyTo(joinPoint, compensable, interceptor, context, parentTxId, retries);
+      result = this.applyTo(joinPoint, compensable, interceptor, context, parentTxId, forwardRetries);
     }
     return result;
   }
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/CompensableInterceptor.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/CompensableInterceptor.java
index 108ebbc..d90d63c 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/CompensableInterceptor.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/CompensableInterceptor.java
@@ -30,9 +30,9 @@ public class CompensableInterceptor implements EventAwareInterceptor {
 
   @Override
   public AlphaResponse preIntercept(String parentTxId, String compensationMethod, int timeout, String retriesMethod,
-      int retries, Object... message) {
+      int forwardRetries, Object... message) {
     return sender.send(new TxStartedEvent(context.globalTxId(), context.localTxId(), parentTxId, compensationMethod,
-        timeout, retriesMethod, retries, message));
+        timeout, retriesMethod, forwardRetries, message));
   }
 
   @Override
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/EventAwareInterceptor.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/EventAwareInterceptor.java
index 5a88ee3..3b4036c 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/EventAwareInterceptor.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/EventAwareInterceptor.java
@@ -21,7 +21,7 @@ public interface EventAwareInterceptor {
 
   AlphaResponse preIntercept(String parentTxId, String compensationMethod, int timeout,
       String retriesMethod,
-      int retries, Object... message);
+      int forwardRetries, Object... message);
 
   void postIntercept(String parentTxId, String compensationMethod);
 
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/ForwardRecovery.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/ForwardRecovery.java
index a514eef..21fde8e 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/ForwardRecovery.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/ForwardRecovery.java
@@ -40,9 +40,9 @@ public class ForwardRecovery extends DefaultRecovery {
   // TODO: 2018/03/10 we do not support retry with forward timeout yet
   @Override
   public Object applyTo(ProceedingJoinPoint joinPoint, Compensable compensable, CompensableInterceptor interceptor,
-      OmegaContext context, String parentTxId, int retries) throws Throwable {
+      OmegaContext context, String parentTxId, int forwardRetries) throws Throwable {
     Method method = ((MethodSignature) joinPoint.getSignature()).getMethod();
-    int remains = retries;
+    int remains = forwardRetries;
     try {
       while (true) {
         try {
@@ -55,12 +55,12 @@ public class ForwardRecovery extends DefaultRecovery {
           remains = remains == -1 ? -1 : remains - 1;
           if (remains == 0) {
             LOG.error(
-                "Retried sub tx failed maximum times, global tx id: {}, local tx id: {}, method: {}, retried times: {}",
-                context.globalTxId(), context.localTxId(), method.toString(), retries);
+                "Forward Retried sub tx failed maximum times, global tx id: {}, local tx id: {}, method: {}, retried times: {}",
+                context.globalTxId(), context.localTxId(), method.toString(), forwardRetries);
             throw throwable;
           }
 
-          LOG.warn("Retrying sub tx failed, global tx id: {}, local tx id: {}, method: {}, remains: {}",
+          LOG.warn("Forward Retrying sub tx failed, global tx id: {}, local tx id: {}, method: {}, remains: {}",
               context.globalTxId(), context.localTxId(), method.toString(), remains);
           Thread.sleep(compensable.retryDelayInMilliseconds());
         }
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/NoOpEventAwareInterceptor.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/NoOpEventAwareInterceptor.java
index bc46242..a6f8447 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/NoOpEventAwareInterceptor.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/NoOpEventAwareInterceptor.java
@@ -24,7 +24,7 @@ public class NoOpEventAwareInterceptor implements EventAwareInterceptor {
   @Override
   public AlphaResponse preIntercept(String parentTxId, String compensationMethod, int timeout,
       String retriesMethod,
-      int retries, Object... message) {
+      int forwardRetries, Object... message) {
     return new AlphaResponse(false);
   }
 
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/RecoveryPolicy.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/RecoveryPolicy.java
index 7aec7c7..b2ab04f 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/RecoveryPolicy.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/RecoveryPolicy.java
@@ -23,5 +23,5 @@ import org.aspectj.lang.ProceedingJoinPoint;
 
 public interface RecoveryPolicy {
   Object apply(ProceedingJoinPoint joinPoint, Compensable compensable, CompensableInterceptor interceptor,
-      OmegaContext context, String parentTxId, int retries) throws Throwable;
+      OmegaContext context, String parentTxId, int forwardRetries) throws Throwable;
 }
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 33098d9..f373067 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
@@ -27,7 +27,7 @@ public class RecoveryPolicyFactory {
    * 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(int retries) {
-    return retries != 0 ? FORWARD_RECOVERY : DEFAULT_RECOVERY;
+  static RecoveryPolicy getRecoveryPolicy(int forwardRetries) {
+    return forwardRetries != 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 826480d..60efca0 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,10 +63,10 @@ public class TransactionAspect extends TransactionContextHelper {
     context.newLocalTxId();
     LOG.debug("Updated context {} for compensable method {} ", context, method.toString());
 
-    int retries = compensable.forwardRetries();
-    RecoveryPolicy recoveryPolicy = RecoveryPolicyFactory.getRecoveryPolicy(retries);
+    int forwardRetries = compensable.forwardRetries();
+    RecoveryPolicy recoveryPolicy = RecoveryPolicyFactory.getRecoveryPolicy(forwardRetries);
     try {
-      return recoveryPolicy.apply(joinPoint, compensable, interceptor, context, localTxId, retries);
+      return recoveryPolicy.apply(joinPoint, compensable, interceptor, context, localTxId, forwardRetries);
     } 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/TxEvent.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/TxEvent.java
index 71e10b5..0bc5c26 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/TxEvent.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/TxEvent.java
@@ -33,10 +33,10 @@ public class TxEvent {
   private final Object[] payloads;
 
   private final String retryMethod;
-  private final int retries;
+  private final int forwardRetries;
 
   public TxEvent(EventType type, String globalTxId, String localTxId, String parentTxId, String compensationMethod,
-      int timeout, String retryMethod, int retries, Object... payloads) {
+      int timeout, String retryMethod, int forwardRetries, Object... payloads) {
     this.timestamp = System.currentTimeMillis();
     this.type = type;
     this.globalTxId = globalTxId;
@@ -45,7 +45,7 @@ public class TxEvent {
     this.compensationMethod = compensationMethod;
     this.timeout = timeout;
     this.retryMethod = retryMethod;
-    this.retries = retries;
+    this.forwardRetries = forwardRetries;
     this.payloads = payloads;
   }
 
@@ -85,8 +85,8 @@ public class TxEvent {
     return retryMethod;
   }
 
-  public int retries() {
-    return retries;
+  public int forwardRetries() {
+    return forwardRetries;
   }
 
   @Override
@@ -98,7 +98,7 @@ public class TxEvent {
         ", compensationMethod='" + compensationMethod + '\'' +
         ", timeout=" + timeout +
         ", retryMethod='" + retryMethod + '\'' +
-        ", retries=" + retries +
+        ", forwardRetries=" + forwardRetries +
         ", payloads=" + Arrays.toString(payloads) +
         '}';
   }
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/TxStartedEvent.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/TxStartedEvent.java
index fe7bb5b..0851f65 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/TxStartedEvent.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/pack/omega/transaction/TxStartedEvent.java
@@ -22,8 +22,8 @@ import org.apache.servicecomb.pack.common.EventType;
 public class TxStartedEvent extends TxEvent {
 
   public TxStartedEvent(String globalTxId, String localTxId, String parentTxId, String compensationMethod,
-      int timeout, String retryMethod, int retries, Object... payloads) {
+      int timeout, String retryMethod, int forwardRetries, Object... payloads) {
     super(EventType.TxStartedEvent, globalTxId, localTxId, parentTxId, compensationMethod, timeout, retryMethod,
-        retries, payloads);
+        forwardRetries, payloads);
   }
 }
diff --git a/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/CompensableInterceptorTest.java b/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/CompensableInterceptorTest.java
index 02c2067..fa3385c 100644
--- a/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/CompensableInterceptorTest.java
+++ b/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/CompensableInterceptorTest.java
@@ -91,15 +91,15 @@ public class CompensableInterceptorTest {
 
   @Test
   public void sendsTxStartedEventBefore() throws Exception {
-    int retries = new Random().nextInt();
-    interceptor.preIntercept(parentTxId, compensationMethod, 0, retryMethod, retries, message);
+    int forwardRetries = new Random().nextInt();
+    interceptor.preIntercept(parentTxId, compensationMethod, 0, retryMethod, forwardRetries, message);
 
     TxEvent event = messages.get(0);
 
     assertThat(event.globalTxId(), is(globalTxId));
     assertThat(event.localTxId(), is(localTxId));
     assertThat(event.parentTxId(), is(parentTxId));
-    assertThat(event.retries(), is(retries));
+    assertThat(event.forwardRetries(), is(forwardRetries));
     assertThat(event.retryMethod(), is(retryMethod));
     assertThat(event.type(), is(EventType.TxStartedEvent));
     assertThat(event.compensationMethod(), is(compensationMethod));
diff --git a/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/DefaultRecoveryTest.java b/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/DefaultRecoveryTest.java
index 23b29fa..0bcf0de 100644
--- a/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/DefaultRecoveryTest.java
+++ b/omega/omega-transaction/src/test/java/org/apache/servicecomb/pack/omega/transaction/DefaultRecoveryTest.java
@@ -131,7 +131,7 @@ public class DefaultRecoveryTest {
     assertThat(startedEvent.localTxId(), is(localTxId));
     assertThat(startedEvent.parentTxId(), is(parentTxId));
     assertThat(startedEvent.type(), is(EventType.TxStartedEvent));
-    assertThat(startedEvent.retries(), is(0));
+    assertThat(startedEvent.forwardRetries(), is(0));
     assertThat(startedEvent.retryMethod(), is(""));
 
     TxEvent endedEvent = messages.get(1);
@@ -159,7 +159,7 @@ public class DefaultRecoveryTest {
     assertThat(startedEvent.localTxId(), is(localTxId));
     assertThat(startedEvent.parentTxId(), is(parentTxId));
     assertThat(startedEvent.type(), is(EventType.TxStartedEvent));
-    assertThat(startedEvent.retries(), is(0));
+    assertThat(startedEvent.forwardRetries(), is(0));
     assertThat(startedEvent.retryMethod(), is(""));
 
     TxEvent abortedEvent = messages.get(1);
@@ -201,7 +201,7 @@ public class DefaultRecoveryTest {
     assertThat(startedEvent.localTxId(), is(localTxId));
     assertThat(startedEvent.parentTxId(), is(parentTxId));
     assertThat(startedEvent.type(), is(EventType.TxStartedEvent));
-    assertThat(startedEvent.retries(), is(retries));
+    assertThat(startedEvent.forwardRetries(), is(retries));
     assertThat(startedEvent.retryMethod(), is(this.getClass().getDeclaredMethod("doNothing").toString()));
   }
 
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 dd3a73c..6d34d21 100644
--- a/pack-contracts/pack-contract-grpc/src/main/proto/GrpcTxEvent.proto
+++ b/pack-contracts/pack-contract-grpc/src/main/proto/GrpcTxEvent.proto
@@ -42,8 +42,8 @@ message GrpcTxEvent {
   bytes payloads = 7;
   string serviceName = 8;
   string instanceId = 9;
-  int32 timeout = 10;
-  int32 retries = 11;
+  int32 forwardTimeout = 10;
+  int32 forwardRetries = 11;
   string retryMethod = 12;
 }