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/31 00:43:31 UTC
[incubator-servicecomb-saga] 05/07: SCB-876 Invoke coordinate
method when receiving coordinate command from alpha.
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 9fb41d027f0ca4d57eb944fbb5945d6289b25000
Author: cherrylzhao <zh...@126.com>
AuthorDate: Wed Aug 29 19:56:11 2018 +0800
SCB-876 Invoke coordinate method when receiving coordinate command from alpha.
---
.../servicecomb/saga/omega/context/CallbackContext.java | 1 -
.../apache/servicecomb/saga/omega/context/OmegaContext.java | 12 ++++++++++++
.../omega/transaction/tcc/CoordinateMessageHandler.java | 13 +++++++++++--
3 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/CallbackContext.java b/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/CallbackContext.java
index 4f803c2..77e2aff 100644
--- a/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/CallbackContext.java
+++ b/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/CallbackContext.java
@@ -42,7 +42,6 @@ public class CallbackContext {
public void apply(String globalTxId, String localTxId, String callbackMethod, Object... payloads) {
CallbackContextInternal contextInternal = contexts.get(callbackMethod);
-
String oldGlobalTxId = omegaContext.globalTxId();
String oldLocalTxId= omegaContext.localTxId();
try {
diff --git a/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/OmegaContext.java b/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/OmegaContext.java
index 8b92868..8ad6083 100644
--- a/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/OmegaContext.java
+++ b/omega/omega-context/src/main/java/org/apache/servicecomb/saga/omega/context/OmegaContext.java
@@ -17,6 +17,8 @@
package org.apache.servicecomb.saga.omega.context;
+import java.util.Collection;
+
/**
* OmegaContext holds the globalTxId and localTxId which are used to build the invocation map
*/
@@ -27,6 +29,7 @@ public class OmegaContext {
private final ThreadLocal<String> globalTxId = new InheritableThreadLocal<>();
private final ThreadLocal<String> localTxId = new InheritableThreadLocal<>();
private final IdGenerator<String> idGenerator;
+ private final ThreadLocal<Collection> parameters = new InheritableThreadLocal<>();
public OmegaContext(IdGenerator<String> idGenerator) {
this.idGenerator = idGenerator;
@@ -60,9 +63,18 @@ public class OmegaContext {
return localTxId.get();
}
+ public void setParameters(Collection parameters) {
+ this.parameters.set(parameters);
+ }
+
+ public Collection parameters() {
+ return parameters.get();
+ }
+
public void clear() {
globalTxId.remove();
localTxId.remove();
+ parameters.remove();
}
@Override
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/CoordinateMessageHandler.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/CoordinateMessageHandler.java
index 7663e72..ca39ccd 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/CoordinateMessageHandler.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/tcc/CoordinateMessageHandler.java
@@ -18,19 +18,28 @@
package org.apache.servicecomb.saga.omega.transaction.tcc;
import org.apache.servicecomb.saga.common.TransactionStatus;
+import org.apache.servicecomb.saga.omega.context.CallbackContext;
+import org.apache.servicecomb.saga.omega.context.OmegaContext;
import org.apache.servicecomb.saga.omega.transaction.tcc.events.CoordinatedEvent;
public class CoordinateMessageHandler implements MessageHandler {
private final TccEventService tccEventService;
- public CoordinateMessageHandler(TccEventService tccEventService) {
+ private final CallbackContext callbackContext;
+
+ private final OmegaContext omegaContext;
+
+ public CoordinateMessageHandler(TccEventService tccEventService,
+ CallbackContext callbackContext, OmegaContext omegaContext) {
this.tccEventService = tccEventService;
+ this.callbackContext = callbackContext;
+ this.omegaContext = omegaContext;
}
@Override
public void onReceive(String globalTxId, String localTxId, String parentTxId, String methodName) {
- //TODO Omega Call the service
+ callbackContext.apply(globalTxId, localTxId, methodName, omegaContext.parameters());
tccEventService.coordinate(new CoordinatedEvent(globalTxId, localTxId, parentTxId, methodName, TransactionStatus.Succeed));
}
}