diff --git a/hsweb-core/src/main/java/org/hswebframework/web/context/ThreadLocalContextHolderSupport.java b/hsweb-core/src/main/java/org/hswebframework/web/context/ThreadLocalContextHolderSupport.java index 7602eb69c..918b5c23b 100644 --- a/hsweb-core/src/main/java/org/hswebframework/web/context/ThreadLocalContextHolderSupport.java +++ b/hsweb-core/src/main/java/org/hswebframework/web/context/ThreadLocalContextHolderSupport.java @@ -1,5 +1,6 @@ package org.hswebframework.web.context; +import lombok.extern.slf4j.Slf4j; import reactor.util.context.Context; import reactor.util.context.ContextView; @@ -9,6 +10,7 @@ import java.io.Closeable; * 基于 ThreadLocal 的上下文持有器支持实现 * 适用于传统平台线程环境 */ +@Slf4j public class ThreadLocalContextHolderSupport implements ContextHolder.ContextHolderSupport { private static final ThreadLocal contextHolder = ThreadLocal.withInitial(Context::empty); @@ -23,8 +25,16 @@ public class ThreadLocalContextHolderSupport implements ContextHolder.ContextHol Context previous = contextHolder.get(); Context newContext = previous.putAll(context); contextHolder.set(newContext); + Thread bound = Thread.currentThread(); - return () -> contextHolder.set(previous); + return () -> { + Thread current = Thread.currentThread(); + if (current != bound) { + log.warn("Context holder is cross thread {}=>{} {}", bound, current, context); + } else { + contextHolder.set(previous); + } + }; } @Override