[ https://issues.apache.org/jira/browse/QPIDJMS-609?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17980469#comment-17980469 ]
Timothy A. Bish commented on QPIDJMS-609: ----------------------------------------- This appears to be intended behavior from the details provided. The remote is not opening the connection for the client and likely the client times out the connection attempt and retries. This occurs because setting the client ID triggers the client to attempt to send the open to the remote and await a response to validate that the configure client ID is accepted which allows the client to move on. Since you are using the failover transport and have not configured a max reconnect attempts limit it will retry continuously. A workaround then is to configure reconnect attempt limits on your failover URI such that an exception is eventually thrown to the caller. > Qpid JMS 2.3.0: setClientID() Hangs Indefinitely at > BalancedProviderFuture.sync() > ---------------------------------------------------------------------------------- > > Key: QPIDJMS-609 > URL: https://issues.apache.org/jira/browse/QPIDJMS-609 > Project: Qpid JMS > Issue Type: Bug > Components: qpid-jms-client > Environment: * {*}Qpid JMS Client Version{*}: {{2.3.0}} > * {*}Broker{*}: ActiveMQ {{6.1.4}} (AMQP 1.0) > * {*}Java Version{*}: Amazon Corretto JDK 21 > Reporter: Rakhesh > Priority: Major > > We're experiencing a *blocking hang* when calling {{setClientID()}} on a > newly created JMS connection. The call *never returns* and the thread remains > stuck in a {*}WAITING state{*}, with {*}no further AMQP activity observed{*}. > Repro code: > {code:java} > JmsConnection conn = (JmsConnection) factory.createConnection(); > conn.setClientID("my-client-id"); // hangs indefinitely here{code} > Thread dump: > {code:java} > "thread name custom" #101 [214] prio=5 os_prio=0 cpu=88.60ms elapsed=1646.32s > tid=0x00007f462c03be80 nid=214 in Object.wait() [0x00007f45b37f6000] > java.lang.Thread.State: WAITING (on object monitor) > at java.lang.Object.wait0(java.base@21.0.7/Native Method) > - waiting on <0x00000000d80f8378> (a > org.apache.qpid.jms.provider.BalancedProviderFuture) > at java.lang.Object.wait(java.base@21.0.7/Object.java:366) > at java.lang.Object.wait(java.base@21.0.7/Object.java:339) > at > org.apache.qpid.jms.provider.BalancedProviderFuture.sync(BalancedProviderFuture.java:136) > - locked <0x00000000d80f8378> (a > org.apache.qpid.jms.provider.BalancedProviderFuture) > at org.apache.qpid.jms.JmsConnection.createResource(JmsConnection.java:693) > at org.apache.qpid.jms.JmsConnection.createResource(JmsConnection.java:682) > at > org.apache.qpid.jms.JmsConnection.createJmsConnection(JmsConnection.java:593) > - locked <0x00000000d80f5d58> (a org.apache.qpid.jms.meta.JmsConnectionInfo) > at > org.apache.qpid.jms.JmsConnection.setClientID(JmsConnection.java:353){code} > > h3. *Logs & Observations:* > * {{PN_TRACE_FRM=1}} is set — *only {{-> SASL}} frames are printed* > repeatedly. > * No {{{}OPEN{}}}, {{{}BEGIN{}}}, or other frames are exchanged post-SASL. > * No logs from {{io.netty}} or {{org.apache.qpid}} even after setting level > to {{{}TRACE{}}}. > * Upgrading to {{2.7.0+}} doesn't resolve the issue either. > > h3. *Expected Behavior:* > {{setClientID()}} should either: > * Complete successfully when broker responds > * Or fail with a timeout/error if handshake fails > h3. *Actual Behavior:* > * Hangs forever — appears to be waiting for a remote peer response that > never arrives. > * All consumer threads waiting on {{getConnectionPoolSize()}} also block due > to this. -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org