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/10 03:43:11 UTC

[incubator-servicecomb-saga] branch master updated (2431bf5 -> 97e856f)

This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-saga.git.


    from 2431bf5  SCB-830 update chassis from 1.0.0-m2 to 1.0.0 (#247)
     new 279fd30  SCB-785 Support to get the globalTxId and localTxId when the componsation method is called.
     new 97e856f  SCB-785 Fixed the grpc-stub dependency issue

The 2 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:
 .../servicecomb/saga/omega/context/CompensationContext.java  | 12 ++++++++++++
 .../servicecomb/saga/omega/spring/OmegaSpringConfig.java     |  4 ++--
 .../transaction/spring/TransactionInterceptionTest.java      |  4 ++--
 3 files changed, 16 insertions(+), 4 deletions(-)


[incubator-servicecomb-saga] 02/02: SCB-785 Fixed the grpc-stub dependency issue

Posted by ni...@apache.org.
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/incubator-servicecomb-saga.git

commit 97e856fe9e5b77947faf0daedf1db9c45d6f56a0
Author: Willem Jiang <ji...@huawei.com>
AuthorDate: Fri Aug 10 11:21:08 2018 +0800

    SCB-785 Fixed the grpc-stub dependency issue
---
 omega/omega-connector/omega-connector-grpc/pom.xml | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/omega/omega-connector/omega-connector-grpc/pom.xml b/omega/omega-connector/omega-connector-grpc/pom.xml
index 9569514..7a14097 100644
--- a/omega/omega-connector/omega-connector-grpc/pom.xml
+++ b/omega/omega-connector/omega-connector-grpc/pom.xml
@@ -39,11 +39,6 @@
     </dependency>
     <dependency>
       <groupId>io.grpc</groupId>
-      <artifactId>grpc-stub</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>io.grpc</groupId>
       <artifactId>grpc-netty</artifactId>
     </dependency>
     <dependency>


[incubator-servicecomb-saga] 01/02: SCB-785 Support to get the globalTxId and localTxId when the componsation method is called.

Posted by ni...@apache.org.
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/incubator-servicecomb-saga.git

commit 279fd30f9027f52814780e946d99ed031103ace7
Author: jeremy-xu <je...@gmail.com>
AuthorDate: Sun Jul 29 23:03:51 2018 +0800

    SCB-785 Support to get the globalTxId and localTxId when the
    componsation method is called.
    
    1. 补偿方法里通过omegaContext.globalTxId()和omegaContext.localTxId()可得到当前分布式事务的全局事务ID及本地事务ID
---
 omega/omega-connector/omega-connector-grpc/pom.xml           |  5 +++++
 .../servicecomb/saga/omega/context/CompensationContext.java  | 12 ++++++++++++
 .../servicecomb/saga/omega/spring/OmegaSpringConfig.java     |  4 ++--
 .../transaction/spring/TransactionInterceptionTest.java      |  4 ++--
 4 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/omega/omega-connector/omega-connector-grpc/pom.xml b/omega/omega-connector/omega-connector-grpc/pom.xml
index 7a14097..9569514 100644
--- a/omega/omega-connector/omega-connector-grpc/pom.xml
+++ b/omega/omega-connector/omega-connector-grpc/pom.xml
@@ -39,6 +39,11 @@
     </dependency>
     <dependency>
       <groupId>io.grpc</groupId>
+      <artifactId>grpc-stub</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>io.grpc</groupId>
       <artifactId>grpc-netty</artifactId>
     </dependency>
     <dependency>
diff --git a/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/CompensationContext.java b/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/CompensationContext.java
index cf16888..0823240 100644
--- a/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/CompensationContext.java
+++ b/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/CompensationContext.java
@@ -30,6 +30,11 @@ public class CompensationContext {
   private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
   private final Map<String, CompensationContextInternal> contexts = new ConcurrentHashMap<>();
+  private final OmegaContext omegaContext;
+
+  public CompensationContext(OmegaContext omegaContext) {
+    this.omegaContext = omegaContext;
+  }
 
   public void addCompensationContext(Method compensationMethod, Object target) {
     compensationMethod.setAccessible(true);
@@ -39,7 +44,11 @@ public class CompensationContext {
   public void apply(String globalTxId, String localTxId, String compensationMethod, Object... payloads) {
     CompensationContextInternal contextInternal = contexts.get(compensationMethod);
 
+    String oldGlobalTxId = omegaContext.globalTxId();
+    String oldLocalTxId= omegaContext.localTxId();
     try {
+      omegaContext.setGlobalTxId(globalTxId);
+      omegaContext.setLocalTxId(localTxId);
       contextInternal.compensationMethod.invoke(contextInternal.target, payloads);
       LOG.info("Compensated transaction with global tx id [{}], local tx id [{}]", globalTxId, localTxId);
     } catch (IllegalAccessException | InvocationTargetException e) {
@@ -47,6 +56,9 @@ public class CompensationContext {
           "Pre-checking for compensation method " + contextInternal.compensationMethod.toString()
               + " was somehow skipped, did you forget to configure compensable method checking on service startup?",
           e);
+    } finally {
+      omegaContext.setGlobalTxId(oldGlobalTxId);
+      omegaContext.setLocalTxId(oldLocalTxId);
     }
   }
 
diff --git a/omega/omega-spring-starter/src/main/java/org/apache/servicecomb/saga/omega/spring/OmegaSpringConfig.java b/omega/omega-spring-starter/src/main/java/org/apache/servicecomb/saga/omega/spring/OmegaSpringConfig.java
index afa6443..51324e7 100644
--- a/omega/omega-spring-starter/src/main/java/org/apache/servicecomb/saga/omega/spring/OmegaSpringConfig.java
+++ b/omega/omega-spring-starter/src/main/java/org/apache/servicecomb/saga/omega/spring/OmegaSpringConfig.java
@@ -52,8 +52,8 @@ class OmegaSpringConfig {
   }
 
   @Bean
-  CompensationContext compensationContext() {
-    return new CompensationContext();
+  CompensationContext compensationContext(OmegaContext omegaContext) {
+    return new CompensationContext(omegaContext);
   }
 
   @Bean
diff --git a/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/TransactionInterceptionTest.java b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/TransactionInterceptionTest.java
index 75d5864..5f3f708 100644
--- a/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/TransactionInterceptionTest.java
+++ b/omega/omega-spring-tx/src/test/java/org/apache/servicecomb/saga/omega/transaction/spring/TransactionInterceptionTest.java
@@ -408,8 +408,8 @@ public class TransactionInterceptionTest {
     private final List<String> messages = new ArrayList<>();
 
     @Bean
-    CompensationContext recoveryContext() {
-      return new CompensationContext();
+    CompensationContext recoveryContext(OmegaContext omegaContext) {
+      return new CompensationContext(omegaContext);
     }
 
     @Bean