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
}