Emmanuel Hugonnet created ARTEMIS-4937:
------------------------------------------
Summary: Resolve virtual thread pinning issues in client side
Artemis code
Key: ARTEMIS-4937
URL: https://issues.apache.org/jira/browse/ARTEMIS-4937
Project: ActiveMQ Artemis
Issue Type: Bug
Components: Broker
Affects Versions: 2.35.0
Reporter: Emmanuel Hugonnet
When I was testing executing WildFly workloads on a virtual thread, turning on
JVM thread pinning logging (see WFLY-19536) revealed pinning happening in
client-side Artemis code (e.g. sending JMS messages). This issue is to trace
working with the Artemis community to resolve these issues and get the fixed
code into WildFly.
See occurrences of 'onPinned' in
https://ci.wildfly.org/repository/download/WF_MainNightlyJobs_StandardLinuxJdk21/446569:id/testsuite/integration/basic/target/wildfly/standalone/log/server.log.
Lines in the stack trace annotated with "<== monitor" show where a monitor
lock was taken that results in pinning when blocking code executes.
An example:
2024-07-18 04:55:23,274 INFO [stdout] (ForkJoinPool-1-worker-1)
Thread[#297,ForkJoinPool-1-worker-1,5,CarrierThreads]
2024-07-18 04:55:23,275 INFO [stdout] (ForkJoinPool-1-worker-1)
java.base/java.lang.VirtualThread$VThreadContinuation.onPinned(VirtualThread.java:185)
2024-07-18 04:55:23,275 INFO [stdout] (ForkJoinPool-1-worker-1)
java.base/jdk.internal.vm.Continuation.onPinned0(Continuation.java:393)
2024-07-18 04:55:23,276 INFO [stdout] (ForkJoinPool-1-worker-1)
java.base/java.lang.VirtualThread.parkNanos(VirtualThread.java:631)
2024-07-18 04:55:23,276 INFO [stdout] (ForkJoinPool-1-worker-1)
java.base/java.lang.System$2.parkVirtualThread(System.java:2648)
2024-07-18 04:55:23,276 INFO [stdout] (ForkJoinPool-1-worker-1)
java.base/jdk.internal.misc.VirtualThreads.park(VirtualThreads.java:67)
2024-07-18 04:55:23,276 INFO [stdout] (ForkJoinPool-1-worker-1)
java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:267)
2024-07-18 04:55:23,276 INFO [stdout] (ForkJoinPool-1-worker-1)
java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:756)
2024-07-18 04:55:23,276 INFO [stdout] (ForkJoinPool-1-worker-1)
java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1126)
2024-07-18 04:55:23,276 INFO [stdout] (ForkJoinPool-1-worker-1)
java.base/java.util.concurrent.CountDownLatch.await(CountDownLatch.java:276)
2024-07-18 04:55:23,277 INFO [stdout] (ForkJoinPool-1-worker-1)
[email protected]//org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.waitForTopology(ClientSessionFactoryImpl.java:544)
2024-07-18 04:55:23,277 INFO [stdout] (ForkJoinPool-1-worker-1)
[email protected]//org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.createSessionFactory(ServerLocatorImpl.java:773)
2024-07-18 04:55:23,277 INFO [stdout] (ForkJoinPool-1-worker-1)
[email protected]//org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.createConnectionInternal(ActiveMQConnectionFactory.java:913)
<== monitors:1
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact