square / okhttp

Square’s meticulous HTTP client for the JVM, Android, and GraalVM.
https://square.github.io/okhttp/
Apache License 2.0
45.73k stars 9.15k forks source link

Thread pinned when use virtual threads and socks5 proxy, Version 5.0.0-alpha.14 #8433

Closed swq8 closed 3 months ago

swq8 commented 3 months ago
Thread[#21,ForkJoinPool-1-worker-1,5,CarrierThreads]
    java.base/java.lang.VirtualThread$VThreadContinuation.onPinned(VirtualThread.java:183)
    java.base/jdk.internal.vm.Continuation.onPinned0(Continuation.java:393)
    java.base/java.lang.VirtualThread.park(VirtualThread.java:582)
    java.base/java.lang.System$2.parkVirtualThread(System.java:2643)
    java.base/jdk.internal.misc.VirtualThreads.park(VirtualThreads.java:54)
    java.base/java.util.concurrent.locks.LockSupport.park(LockSupport.java:219)
    java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:754)
    java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:990)
    java.base/java.util.concurrent.locks.ReentrantLock$Sync.lock(ReentrantLock.java:153)
    java.base/java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:322)
    okhttp3.internal.concurrent.TaskQueue.schedule(TaskQueue.kt:69)
    okhttp3.internal.concurrent.TaskQueue.schedule$default(TaskQueue.kt:65)
    okhttp3.internal.connection.RealConnectionPool.scheduleCloser(RealConnectionPool.kt:403)
    okhttp3.internal.connection.RealConnectionPool.put(RealConnectionPool.kt:152)
    okhttp3.internal.connection.ConnectPlan.handleSuccess(ConnectPlan.kt:507) <== monitors:1
    okhttp3.internal.connection.FastFallbackExchangeFinder.find(FastFallbackExchangeFinder.kt:82)
    okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.kt:275)
    okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:32)
    okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
    okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:95)
    okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
    okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:83)
    okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
    okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:72)
    okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
    okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:203)
    okhttp3.internal.connection.RealCall.execute(RealCall.kt:155)
    my.stress.Utils.getMyResponse(Utils.java:249)
    my.stress.RequestRunnable.run(RequestRunnable.java:85)
    java.base/java.lang.VirtualThread.run(VirtualThread.java:309)
$ java --version
openjdk 21.0.3 2024-04-16 LTS
OpenJDK Runtime Environment (Red_Hat-21.0.3.0.9-1) (build 21.0.3+9-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-21.0.3.0.9-1) (build 21.0.3+9-LTS, mixed mode, sharing)
swq8 commented 3 months ago

duplicate question https://github.com/square/okhttp/issues/8284

yschimke commented 3 months ago

Hopefully https://github.com/square/okhttp/pull/8371 which should be in the next alpha/rc addresses your case