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 00cfad97b4a7c33dbed3f68b6c58a3e0f0a80c4a Author: Willem Jiang <jiangni...@huawei.com> AuthorDate: Thu May 10 16:56:13 2018 +0800 SCB-571 Decouple OmegaContext in omega-transport-dubbo SCB-571 Decouple OmegaContext in omega-transport-dubbo --- .../omega/transport/dubbo/SagaDubboConsumerFilter.java | 2 +- .../omega/transport/dubbo/SagaDubboProviderFilter.java | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/SagaDubboConsumerFilter.java b/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/SagaDubboConsumerFilter.java index 40605e8..a6a73e8 100644 --- a/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/SagaDubboConsumerFilter.java +++ b/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/SagaDubboConsumerFilter.java @@ -37,13 +37,13 @@ import static org.apache.servicecomb.saga.omega.context.OmegaContext.LOCAL_TX_ID /** * add saga transaction id to dubbo invocation -* @date 03/05/2018 10:44 AM */ @Activate(group = {Constants.CONSUMER}) public class SagaDubboConsumerFilter implements Filter { private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException { + // TODO not sure if it's a good way to look up OmegaContext during every invoke OmegaContext omegaContext = (OmegaContext) (new SpringExtensionFactory()).getExtension(OmegaContext.class, "omegaContext"); if(omegaContext != null){ invocation.getAttachments().put(GLOBAL_TX_ID_KEY, omegaContext.globalTxId()); diff --git a/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/SagaDubboProviderFilter.java b/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/SagaDubboProviderFilter.java index a426880..32d253b 100644 --- a/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/SagaDubboProviderFilter.java +++ b/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/SagaDubboProviderFilter.java @@ -31,7 +31,6 @@ import static org.apache.servicecomb.saga.omega.context.OmegaContext.LOCAL_TX_ID /** * get saga transaction id from dubbo invocation and set into omega context -* @date 03/05/2018 10:44 AM */ @Activate(group = Constants.PROVIDER) public class SagaDubboProviderFilter implements Filter { @@ -40,18 +39,21 @@ public class SagaDubboProviderFilter implements Filter { @Override public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException { + // TODO not sure if it's a good way to look up OmegaContext during every invoke OmegaContext omegaContext = new SpringExtensionFactory().getExtension(OmegaContext.class, "omegaContext"); - String globalTxId = invocation.getAttachment(GLOBAL_TX_ID_KEY); - if (globalTxId == null) { + if (omegaContext != null) { + String globalTxId = invocation.getAttachment(GLOBAL_TX_ID_KEY); + if (globalTxId == null) { LOG.info("no such omega context global id: {}", GLOBAL_TX_ID_KEY); - }else{ + } else { omegaContext.setGlobalTxId(globalTxId); omegaContext.setLocalTxId(invocation.getAttachment(LOCAL_TX_ID_KEY)); - LOG.info("Added {} {} and {} {} to omegaContext", new Object[]{GLOBAL_TX_ID_KEY, omegaContext.globalTxId(), - LOCAL_TX_ID_KEY, omegaContext.localTxId()}); + LOG.info("Added {} {} and {} {} to omegaContext", new Object[] {GLOBAL_TX_ID_KEY, omegaContext.globalTxId(), + LOCAL_TX_ID_KEY, omegaContext.localTxId()}); + } + invocation.getAttachments().put(GLOBAL_TX_ID_KEY, null); + invocation.getAttachments().put(LOCAL_TX_ID_KEY, null); } - invocation.getAttachments().put(GLOBAL_TX_ID_KEY,null); - invocation.getAttachments().put(LOCAL_TX_ID_KEY,null); if(invoker != null){ return invoker.invoke(invocation); -- To stop receiving notification emails like this one, please contact ningji...@apache.org.