[ 
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

Reply via email to