This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.0 by this push:
new 8f7d1f37ec Fix ContextFilter not cleanup thread (#10615)
8f7d1f37ec is described below
commit 8f7d1f37ec7480774951f49ca36025bc89edb76d
Author: Albumen Kevin <[email protected]>
AuthorDate: Mon Sep 19 15:11:51 2022 +0800
Fix ContextFilter not cleanup thread (#10615)
---
.../apache/dubbo/common/threadpool/serial/SerializingExecutor.java | 4 ++++
.../dubbo/remoting/transport/dispatcher/ChannelEventRunnable.java | 4 +++-
.../src/main/java/org/apache/dubbo/rpc/filter/ContextFilter.java | 3 +++
3 files changed, 10 insertions(+), 1 deletion(-)
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/threadpool/serial/SerializingExecutor.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/threadpool/serial/SerializingExecutor.java
index bc82f26b25..041ba56839 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/common/threadpool/serial/SerializingExecutor.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/common/threadpool/serial/SerializingExecutor.java
@@ -19,6 +19,7 @@ package org.apache.dubbo.common.threadpool.serial;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
+import org.apache.dubbo.common.threadlocal.InternalThreadLocal;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
@@ -96,9 +97,12 @@ public final class SerializingExecutor implements Executor,
Runnable {
try {
while ((r = runQueue.poll()) != null) {
try {
+ InternalThreadLocal.removeAll();
r.run();
} catch (RuntimeException e) {
LOGGER.error("Exception while executing runnable " + r, e);
+ } finally {
+ InternalThreadLocal.removeAll();
}
}
} finally {
diff --git
a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/dispatcher/ChannelEventRunnable.java
b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/dispatcher/ChannelEventRunnable.java
index ffd6f2a381..64a41253d0 100644
---
a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/dispatcher/ChannelEventRunnable.java
+++
b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/dispatcher/ChannelEventRunnable.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.remoting.transport.dispatcher;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
+import org.apache.dubbo.common.threadlocal.InternalThreadLocal;
import org.apache.dubbo.remoting.Channel;
import org.apache.dubbo.remoting.ChannelHandler;
@@ -52,6 +53,7 @@ public class ChannelEventRunnable implements Runnable {
@Override
public void run() {
+ InternalThreadLocal.removeAll();
if (state == ChannelState.RECEIVED) {
try {
handler.received(channel, message);
@@ -95,7 +97,7 @@ public class ChannelEventRunnable implements Runnable {
logger.warn("unknown state: " + state + ", message is " +
message);
}
}
-
+ InternalThreadLocal.removeAll();
}
/**
diff --git
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ContextFilter.java
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ContextFilter.java
index 356995d864..93d5f2b58e 100644
---
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ContextFilter.java
+++
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ContextFilter.java
@@ -131,6 +131,9 @@ public class ContextFilter implements Filter,
Filter.Listener {
return invoker.invoke(invocation);
} finally {
context.clearAfterEachInvoke(true);
+ if (context.isAsyncStarted()) {
+ removeContext();
+ }
}
}