From e8d2a47026c2b364d13c5efa5b54b7abaf41e65e Mon Sep 17 00:00:00 2001 From: HaojunRen <1394997@qq.com> Date: Tue, 27 Apr 2021 18:35:20 +0800 Subject: [PATCH] Avoid calling in the same thread --- .../discovery/agent/plugin/spring/async/WrapCallable.java | 5 ++--- .../plugin/thread/interceptor/ThreadCallInterceptor.java | 7 +++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/discovery-agent-starter/src/main/java/com/nepxion/discovery/agent/plugin/spring/async/WrapCallable.java b/discovery-agent-starter/src/main/java/com/nepxion/discovery/agent/plugin/spring/async/WrapCallable.java index c604e64..5cc4081 100644 --- a/discovery-agent-starter/src/main/java/com/nepxion/discovery/agent/plugin/spring/async/WrapCallable.java +++ b/discovery-agent-starter/src/main/java/com/nepxion/discovery/agent/plugin/spring/async/WrapCallable.java @@ -27,13 +27,12 @@ public WrapCallable(Callable callable) { @Override public T call() throws Exception { - - //Avoid calling in the same thread. + // Avoid calling in the same thread if (asyncContext.getOriginThread().equals(Thread.currentThread())) { return callable.call(); } - //Call the original method and copy some objects held by ThreadLocal. + // Call the original method and copy some objects held by ThreadLocal Object[] objects = asyncContext.getObjects(); ThreadLocalCopier.before(objects); try { diff --git a/discovery-agent-starter/src/main/java/com/nepxion/discovery/agent/plugin/thread/interceptor/ThreadCallInterceptor.java b/discovery-agent-starter/src/main/java/com/nepxion/discovery/agent/plugin/thread/interceptor/ThreadCallInterceptor.java index 9e76142..d426a60 100644 --- a/discovery-agent-starter/src/main/java/com/nepxion/discovery/agent/plugin/thread/interceptor/ThreadCallInterceptor.java +++ b/discovery-agent-starter/src/main/java/com/nepxion/discovery/agent/plugin/thread/interceptor/ThreadCallInterceptor.java @@ -21,7 +21,8 @@ public static void before(Object object) { if (null == asyncContext) { return; } - //Avoid calling in the same thread. + + // Avoid calling in the same thread if (asyncContext.getOriginThread().equals(Thread.currentThread())) { return; } @@ -37,10 +38,12 @@ public static void after(Object object) { if (null == asyncContext) { return; } - //Avoid calling in the same thread. + + // Avoid calling in the same thread if (asyncContext.getOriginThread().equals(Thread.currentThread())) { return; } + ThreadLocalCopier.after(); } }