[ 
https://issues.apache.org/jira/browse/QPID-8185?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16470670#comment-16470670
 ] 

ASF subversion and git services commented on QPID-8185:
-------------------------------------------------------

Commit 983827591c27fd7d5d7289bbd9373a71728ba191 in qpid-jms-amqp-0-x's branch 
refs/heads/master from [~alex.rufous]
[ https://git-wip-us.apache.org/repos/asf?p=qpid-jms-amqp-0-x.git;h=9838275 ]

QPID-8185: [JMS AMQP 0-x][AMQP 0-8..0-91] Make sure that client closes TCP 
connection on failure with sending connection.close


> [JMS AMQP 0-x][AMQP 0-8..0-91] Make sure that client closes TCP connection on 
> failure with sending connection.close
> -------------------------------------------------------------------------------------------------------------------
>
>                 Key: QPID-8185
>                 URL: https://issues.apache.org/jira/browse/QPID-8185
>             Project: Qpid
>          Issue Type: Improvement
>          Components: JMS AMQP 0-x
>    Affects Versions: qpid-java-6.1.6, 0.18, 0.20, 0.22, 0.24, 0.26, 0.28, 
> 0.30, 0.32, qpid-java-6.0.8, qpid-java-client-0-x-6.3.0
>            Reporter: Alex Rudyy
>            Priority: Major
>             Fix For: qpid-java-client-0-x-6.3.1
>
>         Attachments: 
> 0001-QPID-8185-JMS-AMQP-0-x-AMQP-0-8.0-91-Stop-handling-i.patch, 
> 0002-QPID-8185-JMS-AMQP-0-x-AMQP-0-8.0-91-Make-sure-that-.patch
>
>
> Sending connection.close as part of {{Connection#close}} can end-up in 
> timeout exception. The underlying TCP connection remains open and Broker can 
> continue sending data to the client when session close ends up in timeout as 
> well. The incoming frames cannot be associated with the sessions, as the 
> client removes session information on connection close. As result, a number 
> of confusing exceptions is reported.
> Here are the examples of exception stack-traces reported for the issue
> {noformat}
> INFO  Unsuspending channel threw an exception:                                
>                         [Thread-227][AMQSession.java:2374]
> org.apache.qpid.AMQTimeoutException: Server did not respond in a timely 
> fashion
>         at 
> org.apache.qpid.client.util.BlockingWaiter.block(BlockingWaiter.java:170) 
> ~[qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.protocol.BlockingMethodFrameListener.blockForFrame(BlockingMethodFrameListener.java:115)
>  ~[qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.protocol.AMQProtocolHandler.writeCommandFrameAndWaitForReply(AMQProtocolHandler.java:715)
>  ~[qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.protocol.AMQProtocolHandler.syncWrite(AMQProtocolHandler.java:736)
>  ~[qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.protocol.AMQProtocolHandler.syncWrite(AMQProtocolHandler.java:730)
>  ~[qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.AMQSession_0_8.sendSuspendChannel(AMQSession_0_8.java:728)
>  ~[qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.AMQSession.suspendChannel(AMQSession.java:3156) 
> [qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.AMQSession.startDispatcherIfNecessary(AMQSession.java:2370)
>  [qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.AMQSession.syncDispatchQueue(AMQSession.java:2223) 
> [qpid-client-0.32.jar:0.32]
>         at org.apache.qpid.client.AMQSession.rollback(AMQSession.java:1881) 
> [qpid-client-0.32.jar:0.32]
> ERROR Error closing session: javax.jms.JMSException: Error closing session: 
> org.apache.qpid.AMQTimeoutException: Server did not respond in a timely 
> fashion [error code 408: Request 
> Timeout][DefaultMessageListenerContainer-2][AMQConnection.java:1039]
> ERROR Error closing connection                                                
>                         
> [DefaultMessageListenerContainer-2][AMQConnection.java:971]
> javax.jms.JMSException: Error closing session: 
> org.apache.qpid.AMQTimeoutException: Server did not respond in a timely 
> fashion [error code 408: Request Timeout]
>         at org.apache.qpid.client.AMQSession.close(AMQSession.java:764) 
> ~[qpid-client-0.32.jar:0.32]
>         at org.apache.qpid.client.AMQSession.close(AMQSession.java:730) 
> ~[qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.AMQConnection.closeAllSessions(AMQConnection.java:1035)
>  [qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.AMQConnection.doClose(AMQConnection.java:962) 
> [qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.AMQConnection.doClose(AMQConnection.java:951) 
> [qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.AMQConnection.doClose(AMQConnection.java:951) 
> [qpid-client-0.32.jar:0.32]
>         at org.apache.qpid.client.AMQConnection.close(AMQConnection.java:935) 
> [qpid-client-0.32.jar:0.32]
>         at org.apache.qpid.client.AMQConnection.close(AMQConnection.java:916) 
> [qpid-client-0.32.jar:0.32]
>         at 
> org.springframework.jms.connection.ConnectionFactoryUtils.releaseConnection(ConnectionFactoryUtils.java:80)
>  [spring-jms-4.2.3.RELEASE.jar:4.2.3.RELEASE]
>         at 
> org.springframework.jms.listener.AbstractJmsListeningContainer.refreshSharedConnection(AbstractJmsListeningContainer.java:395)
>  [spring-jms-4.2.3.RELEASE.jar:4.2.3.RELEASE]
>         at 
> org.springframework.jms.listener.DefaultMessageListenerContainer.refreshConnectionUntilSuccessful(DefaultMessageListenerContainer.java:915)
>  [spring-jms-4.2.3.RELEASE.jar:4.2.3.RELEASE]
>         at 
> org.springframework.jms.listener.DefaultMessageListenerContainer.recoverAfterListenerSetupFailure(DefaultMessageListenerContainer.java:890)
>  [spring-jms-4.2.3.RELEASE.jar:4.2.3.RELEASE]
>         at 
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1061)
>  [spring-jms-4.2.3.RELEASE.jar:4.2.3.RELEASE]
>         at java.lang.Thread.run(Thread.java:724) [na:1.7.0_40]
> Caused by: org.apache.qpid.AMQTimeoutException: Server did not respond in a 
> timely fashion
>         at 
> org.apache.qpid.client.util.BlockingWaiter.block(BlockingWaiter.java:170) 
> ~[qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.protocol.BlockingMethodFrameListener.blockForFrame(BlockingMethodFrameListener.java:115)
>  ~[qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.protocol.AMQProtocolHandler.writeCommandFrameAndWaitForReply(AMQProtocolHandler.java:715)
>  ~[qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.protocol.AMQProtocolHandler.syncWrite(AMQProtocolHandler.java:736)
>  ~[qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.AMQSession_0_8.sendClose(AMQSession_0_8.java:255) 
> ~[qpid-client-0.32.jar:0.32]
>         at org.apache.qpid.client.AMQSession.close(AMQSession.java:758) 
> ~[qpid-client-0.32.jar:0.32]
>         ... 13 common frames omitted
> ERROR Exception processing frame                                              
>                         
> [IoRcvr-/127.0.0.1:58728-localhost/127.0.0.1:5681][AMQProtocolHandler.java:512]
> java.lang.NullPointerException: null
>         at 
> org.apache.qpid.client.protocol.AMQProtocolSession.confirmConsumerCancelled(AMQProtocolSession.java:412)
>  ~[qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.handler.BasicCancelOkMethodHandler.methodReceived(BasicCancelOkMethodHandler.java:53)
>  ~[qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.handler.ClientMethodDispatcherImpl.dispatchBasicCancelOk(ClientMethodDispatcherImpl.java:160)
>  ~[qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.framing.BasicCancelOkBody.execute(BasicCancelOkBody.java:87) 
> ~[qpid-common-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.state.AMQStateManager.methodReceived(AMQStateManager.java:116)
>  ~[qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.protocol.AMQProtocolHandler.methodBodyReceived(AMQProtocolHandler.java:539)
>  [qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.protocol.AMQProtocolSession.methodFrameReceived(AMQProtocolSession.java:471)
>  ~[qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.framing.AMQMethodBodyImpl.handle(AMQMethodBodyImpl.java:93) 
> ~[qpid-common-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.protocol.AMQProtocolHandler.received(AMQProtocolHandler.java:492)
>  [qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.protocol.AMQProtocolHandler.received(AMQProtocolHandler.java:120)
>  [qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.AMQConnectionDelegate_8_0$ReceiverClosedWaiter.received(AMQConnectionDelegate_8_0.java:538)
>  [qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.client.AMQConnectionDelegate_8_0$ReceiverClosedWaiter.received(AMQConnectionDelegate_8_0.java:524)
>  [qpid-client-0.32.jar:0.32]
>         at 
> org.apache.qpid.transport.network.io.IoReceiver.run(IoReceiver.java:163) 
> [qpid-common-0.32.jar:0.32]
>         at java.lang.Thread.run(Thread.java:724) [na:1.7.0_40]
> {noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to