You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by zh...@apache.org on 2019/07/05 06:25:10 UTC

[servicecomb-pack] 01/02: SCB-1321 Does not use BlockingQueue when actor model calling compensation

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

zhanglei pushed a commit to branch SCB-1321
in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git

commit 0c30961d2768166b2ec39c66a577191084b32bcd
Author: Lei Zhang <zh...@apache.org>
AuthorDate: Fri Jul 5 14:19:24 2019 +0800

    SCB-1321 Does not use BlockingQueue when actor model calling compensation
---
 .../pack/alpha/core/PushBackOmegaCallback.java            | 15 +++++++++++----
 .../org/apache/servicecomb/pack/common/EventType.java     |  3 ++-
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/alpha/alpha-core/src/main/java/org/apache/servicecomb/pack/alpha/core/PushBackOmegaCallback.java b/alpha/alpha-core/src/main/java/org/apache/servicecomb/pack/alpha/core/PushBackOmegaCallback.java
index 0940855..a30c293 100644
--- a/alpha/alpha-core/src/main/java/org/apache/servicecomb/pack/alpha/core/PushBackOmegaCallback.java
+++ b/alpha/alpha-core/src/main/java/org/apache/servicecomb/pack/alpha/core/PushBackOmegaCallback.java
@@ -17,6 +17,8 @@
 
 package org.apache.servicecomb.pack.alpha.core;
 
+import static org.apache.servicecomb.pack.common.EventType.TxCompensateEvent;
+
 import java.lang.invoke.MethodHandles;
 import java.util.concurrent.BlockingQueue;
 
@@ -36,11 +38,16 @@ public class PushBackOmegaCallback implements OmegaCallback {
 
   @Override
   public void compensate(TxEvent event) {
-    try {
+    if(event.type().equals(TxCompensateEvent.name())){
+      // actor call compensate
       underlying.compensate(event);
-    } catch (Exception e) {
-      logError(event, e);
-      pendingCompensations.offer(() -> compensate(event));
+    }else{
+      try {
+        underlying.compensate(event);
+      } catch (Exception e) {
+        logError(event, e);
+        pendingCompensations.offer(() -> compensate(event));
+      }
     }
   }
 
diff --git a/pack-common/src/main/java/org/apache/servicecomb/pack/common/EventType.java b/pack-common/src/main/java/org/apache/servicecomb/pack/common/EventType.java
index df985f4..e8c88a8 100644
--- a/pack-common/src/main/java/org/apache/servicecomb/pack/common/EventType.java
+++ b/pack-common/src/main/java/org/apache/servicecomb/pack/common/EventType.java
@@ -25,5 +25,6 @@ public enum EventType {
   TxCompensatedEvent,
   SagaEndedEvent,
   SagaAbortedEvent,
-  SagaTimeoutEvent
+  SagaTimeoutEvent,
+  TxCompensateEvent
 }