apache / dubbo

The java implementation of Apache Dubbo. An RPC and microservice framework.
https://dubbo.apache.org/
Apache License 2.0
40.42k stars 26.41k forks source link

dubbo 哪个版本支持jdk19的虚拟线程? #11696

Closed tianyuxingxuan closed 6 months ago

tianyuxingxuan commented 1 year ago

应用升级到jdk19,但是dubbo代码应该是使用了synchronized,导致虚拟线程无法卸载。这个dubbo有支持吗? [38;5;250m2023-03-01 16:47:46 Thread[#190,ForkJoinPool-1-worker-3,5,CarrierThreads] 2023-03-01 16:47:46  java.base/java.lang.VirtualThread$VThreadContinuation.onPinned(VirtualThread.java:180) 2023-03-01 16:47:46  java.base/jdk.internal.vm.Continuation.onPinned0(Continuation.java:398) 2023-03-01 16:47:46  java.base/jdk.internal.vm.Continuation.yield0(Continuation.java:390) 2023-03-01 16:47:46  java.base/jdk.internal.vm.Continuation.yield(Continuation.java:357) 2023-03-01 16:47:46  java.base/java.lang.VirtualThread.yieldContinuation(VirtualThread.java:370) 2023-03-01 16:47:46  java.base/java.lang.VirtualThread.park(VirtualThread.java:499) 2023-03-01 16:47:46  java.base/java.lang.System$2.parkVirtualThread(System.java:2606) 2023-03-01 16:47:46  java.base/jdk.internal.misc.VirtualThreads.park(VirtualThreads.java:54) 2023-03-01 16:47:46  java.base/java.util.concurrent.locks.LockSupport.park(LockSupport.java:219) 2023-03-01 16:47:46  java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:715) 2023-03-01 16:47:46  java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:938) 2023-03-01 16:47:46  java.base/java.util.concurrent.locks.ReentrantLock$Sync.lock(ReentrantLock.java:153) 2023-03-01 16:47:46  java.base/java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:322) 2023-03-01 16:47:46  java.base/java.util.concurrent.LinkedBlockingQueue.offer(LinkedBlockingQueue.java:411) 2023-03-01 16:47:46  java.base/java.util.AbstractQueue.add(AbstractQueue.java:95) 2023-03-01 16:47:46  org.apache.dubbo.common.timer.HashedWheelTimer$HashedWheelTimeout.cancel(HashedWheelTimer.java:607) 2023-03-01 16:47:46  org.apache.dubbo.remoting.exchange.support.DefaultFuture.received(DefaultFuture.java:168) 2023-03-01 16:47:46  org.apache.dubbo.remoting.exchange.support.DefaultFuture.received(DefaultFuture.java:158) 2023-03-01 16:47:46  org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.handleResponse(HeaderExchangeHandler.java:60) 2023-03-01 16:47:46  org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.received(HeaderExchangeHandler.java:181) 2023-03-01 16:47:46  org.apache.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:51) 2023-03-01 16:47:46  org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:57) 2023-03-01 16:47:46  org.apache.dubbo.common.threadpool.ThreadlessExecutor$RunnableWrapper.run(ThreadlessExecutor.java:196) 2023-03-01 16:47:46  org.apache.dubbo.common.threadpool.ThreadlessExecutor.waitAndDrain(ThreadlessExecutor.java:99) <== monitors:1 2023-03-01 16:47:46  org.apache.dubbo.rpc.AsyncRpcResult.get(AsyncRpcResult.java:179) 2023-03-01 16:47:46  org.apache.dubbo.rpc.protocol.AsyncToSyncInvoker.invoke(AsyncToSyncInvoker.java:61) 2023-03-01 16:47:46  org.apache.dubbo.rpc.listener.ListenerInvokerWrapper.invoke(ListenerInvokerWrapper.java:78) 2023-03-01 16:47:46  com.yupaopao.framework.spring.boot.dubbo.filter.Dubbo27ExceptionFilter.invoke(Dubbo27ExceptionFilter.java:23) 2023-03-01 16:47:46  org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61) 2023-03-01 16:47:46  com.yupaopao.framework.spring.boot.dubbo.filter.ConsumerAuthorityFilter.invoke(ConsumerAuthorityFilter.java:53) 2023-03-01 16:47:46  org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61) 2023-03-01 16:47:46  com.alibaba.csp.sentinel.adapter.dubbo.SentinelDubboConsumerFilter.invoke(SentinelDubboConsumerFilter.java:60) 2023-03-01 16:47:46  org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61) 2023-03-01 16:47:46  com.yupaopao.platform.util.dubbo.filter.ResponseConsumerFilter.invoke(ResponseConsumerFilter.java:22) 2023-03-01 16:47:46  org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61) 2023-03-01 16:47:46  org.apache.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:91) 2023-03-01 16:47:46  org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61) 2023-03-01 16:47:46  org.apache.dubbo.rpc.protocol.dubbo.filter.FutureFilter.invoke(FutureFilter.java:52) 2023-03-01 16:47:46  org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61) 2023-03-01 16:47:46  com.alibaba.csp.sentinel.adapter.dubbo.DubboAppContextFilter.invoke(DubboAppContextFilter.java:41) 2023-03-01 16:47:46  org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61) 2023-03-01 16:47:46  net.dubboclub.catmonitor.AppNameAppendFilter.invoke(AppNameAppendFilter.java:18) 2023-03-01 16:47:46  org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61) 2023-03-01 16:47:46  net.dubboclub.catmonitor.CatTransaction.invoke(CatTransaction.java:152) 2023-03-01 16:47:46  org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61) 2023-03-01 16:47:46  org.apache.dubbo.rpc.filter.ConsumerContextFilter.invoke(ConsumerContextFilter.java:69) 2023-03-01 16:47:46  org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61) 2023-03-01 16:47:46  com.yupaopao.platform.util.dubbo.filter.ConsumerExceptionFilter.invoke(ConsumerExceptionFilter.java:25) 2023-03-01 16:47:46  org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61) 2023-03-01 16:47:46  com.alibaba.dubbo.rpc.Invoker$CompatibleInvoker.invoke(Invoker.java:55) 2023-03-01 16:47:46  com.yupaopao.chatroom.degrade.filter.ChatroomResponseConsumerFilter.invoke(ChatroomResponseConsumerFilter.java:21) 2023-03-01 16:47:46  com.alibaba.dubbo.rpc.Filter.invoke(Filter.java:29) 2023-03-01 16:47:46  org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61) 2023-03-01 16:47:46  org.apache.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:56) 2023-03-01 16:47:46  org.apache.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:79) 2023-03-01 16:47:46  org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:265) 2023-03-01 16:47:46  org.apache.dubbo.rpc.cluster.interceptor.ClusterInterceptor.intercept(ClusterInterceptor.java:47) 2023-03-01 16:47:46  org.apache.dubbo.rpc.cluster.support.wrapper.AbstractCluster$InterceptorInvokerNode.invoke(AbstractCluster.java:92) 2023-03-01 16:47:46  org.apache.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:96) 2023-03-01 16:47:46  org.apache.dubbo.common.bytecode.proxy20.getUserBirthdayAndAuth(proxy20.java) 2023-03-01 16:47:46  com.yupaopao.yuer.chatroom.base.facade.UserFacade.getUserAuthDataAndBirthday(UserFacade.java:707)

AlbumenJ commented 1 year ago

目前 Dubbo 的协程支持仍是试验型阶段的,synchronized 这个关键字在 Dubbo 使用的还挺多的,需要一个一个修改