Polish alibaba/spring-cloud-alibaba#1739 : Sync the Seata from master

pull/1746/head
mercyblitz 5 years ago
parent bafe58a65a
commit 1315470fbe

@ -19,11 +19,11 @@ package com.alibaba.cloud.seata.web;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import io.seata.common.util.StringUtils;
import io.seata.core.context.RootContext; import io.seata.core.context.RootContext;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor; 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); log.debug("xid in RootContext {} xid in RpcContext {}", xid, rpcXid);
} }
if (xid == null && rpcXid != null) { if (StringUtils.isBlank(xid) && rpcXid != null) {
RootContext.bind(rpcXid); RootContext.bind(rpcXid);
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("bind {} to RootContext", rpcXid); log.debug("bind {} to RootContext", rpcXid);
@ -62,22 +62,23 @@ public class SeataHandlerInterceptor implements HandlerInterceptor {
@Override @Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
Object handler, Exception e) { 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(); String unbindXid = RootContext.unbind();
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("unbind {} from RootContext", unbindXid); log.debug("unbind {} from RootContext", unbindXid);
} }
if (!rpcXid.equalsIgnoreCase(unbindXid)) { if (!rpcXid.equalsIgnoreCase(unbindXid)) {
log.warn("xid in change during RPC from {} to {}", rpcXid, unbindXid); log.warn("xid in change during RPC from {} to {}", rpcXid, unbindXid);
if (unbindXid != null) { if (unbindXid != null) {
RootContext.bind(unbindXid); RootContext.bind(unbindXid);
log.warn("bind {} back to RootContext", unbindXid); log.warn("bind {} back to RootContext", unbindXid);
}
} }
} }
} }

Loading…
Cancel
Save