From 1315470fbe7f3fbf0acd66c7e78dea4ce2891e2d Mon Sep 17 00:00:00 2001 From: mercyblitz Date: Fri, 18 Sep 2020 11:18:55 +0800 Subject: [PATCH] Polish alibaba/spring-cloud-alibaba#1739 : Sync the Seata from master --- .../seata/web/SeataHandlerInterceptor.java | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/web/SeataHandlerInterceptor.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/web/SeataHandlerInterceptor.java index dcc0b28c0..6ddedb1bd 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/web/SeataHandlerInterceptor.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/web/SeataHandlerInterceptor.java @@ -19,11 +19,11 @@ package com.alibaba.cloud.seata.web; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import io.seata.common.util.StringUtils; import io.seata.core.context.RootContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.util.StringUtils; import org.springframework.web.servlet.HandlerInterceptor; /** @@ -50,7 +50,7 @@ public class SeataHandlerInterceptor implements HandlerInterceptor { log.debug("xid in RootContext {} xid in RpcContext {}", xid, rpcXid); } - if (xid == null && rpcXid != null) { + if (StringUtils.isBlank(xid) && rpcXid != null) { RootContext.bind(rpcXid); if (log.isDebugEnabled()) { log.debug("bind {} to RootContext", rpcXid); @@ -62,22 +62,23 @@ public class SeataHandlerInterceptor implements HandlerInterceptor { @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception e) { + if (StringUtils.isNotBlank(RootContext.getXID())) { + String rpcXid = request.getHeader(RootContext.KEY_XID); - String rpcXid = request.getHeader(RootContext.KEY_XID); - - if (StringUtils.isEmpty(rpcXid)) { - return; - } + if (StringUtils.isEmpty(rpcXid)) { + return; + } - String unbindXid = RootContext.unbind(); - if (log.isDebugEnabled()) { - log.debug("unbind {} from RootContext", unbindXid); - } - if (!rpcXid.equalsIgnoreCase(unbindXid)) { - log.warn("xid in change during RPC from {} to {}", rpcXid, unbindXid); - if (unbindXid != null) { - RootContext.bind(unbindXid); - log.warn("bind {} back to RootContext", unbindXid); + String unbindXid = RootContext.unbind(); + if (log.isDebugEnabled()) { + log.debug("unbind {} from RootContext", unbindXid); + } + if (!rpcXid.equalsIgnoreCase(unbindXid)) { + log.warn("xid in change during RPC from {} to {}", rpcXid, unbindXid); + if (unbindXid != null) { + RootContext.bind(unbindXid); + log.warn("bind {} back to RootContext", unbindXid); + } } } }