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

Ganesh Murthy commented on DISPATCH-432:
----------------------------------------

I think that the TCP close handshake is enough to indicate that the client has 
orderly closed the connection. It seems that Artemis might have some resources 
hanging around even after the TCP close has been received and hence you see the 
above stacktrace on Artemis when trying to kill it. 

The dispatch router does kill the connection to the broker and using wireshark, 
you can see the TCP close handshake is happening correctly between the broker 
and the router (The TCP connection as a whole is  considered terminated if both 
sides have finished the shut down procedure by sending a FIN and receiving an 
ACK). I have attached the wireshark trace to this ticket.

We will let the Artemis guys decide when they want their session to expire 
which ideally should be when the TCP close handshake finishes.

I am closing this ticket as not a bug.

Thanks.

> Qpid Dispatch Router does not close connection to Broker on exit
> ----------------------------------------------------------------
>
>                 Key: DISPATCH-432
>                 URL: https://issues.apache.org/jira/browse/DISPATCH-432
>             Project: Qpid Dispatch
>          Issue Type: Bug
>    Affects Versions: 0.6.0
>            Reporter: Jiri Danek
>         Attachments: broker-router-close-handshake.pcapng
>
>
> I have the following configuration for connecting to broker in my 
> {{qdrouterd.conf}}
> {noformat}
> connector {
>   name: ba
>   role: route-container
>   host: 172.28.128.221
>   port: amqp
>   sasl-mechanisms: ANONYMOUS
> }
> address {
>   prefix: jms.queue
>   waypoint: yes
> }
> autoLink {
>   addr: jms.queue.first
>   dir: in
>   connection: ba
> }
> autoLink {
>   addr: jms.queue.first
>   dir: out
>   connection: ba
> }
> autoLink {
>   addr: jms.queue.second
>   dir: in
>   connection: ba
> }
> autoLink {
>   addr: jms.queue.second
>   dir: out
>   connection: ba
> }
> {noformat}
> If I stop dispatch demon with {{sudo service qdrouterd stop}} and then kill 
> Artemis broker with ^C, broker prints the following
> {noformat}
> 12:18:04,721 INFO  [org.apache.activemq.artemis] AMQ241001: HTTP Server 
> started at http://localhost:8161
> 12:18:04,722 INFO  [org.apache.activemq.artemis] AMQ241002: Artemis Jolokia 
> REST API available at http://localhost:8161/jolokia
> ^C12:18:16,881 ERROR [org.apache.activemq.artemis.core.server] AMQ224065: 
> Failed to remove auto-created queue jms.queue.second: 
> java.lang.IllegalStateException: Cannot access JMS Server, core server is not 
> active
>         at 
> org.apache.activemq.artemis.jms.server.impl.JMSServerManagerImpl.checkInitialised(JMSServerManagerImpl.java:1416)
>  [artemis-jms-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.jms.server.impl.JMSServerManagerImpl.destroyQueue(JMSServerManagerImpl.java:766)
>  [artemis-jms-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.jms.server.impl.JMSServerManagerImpl$JMSQueueDeleter.delete(JMSServerManagerImpl.java:1639)
>  [artemis-jms-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.server.impl.AutoCreatedQueueManagerImpl$1.run(AutoCreatedQueueManagerImpl.java:50)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.utils.ReferenceCounterUtil.decrement(ReferenceCounterUtil.java:55)
>  [artemis-commons-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.server.impl.AutoCreatedQueueManagerImpl.decrement(AutoCreatedQueueManagerImpl.java:78)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.server.impl.QueueImpl.removeConsumer(QueueImpl.java:768)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl.removeItself(ServerConsumerImpl.java:500)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl.close(ServerConsumerImpl.java:446)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.server.impl.ServerSessionImpl.doClose(ServerSessionImpl.java:345)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.server.impl.ServerSessionImpl$1.done(ServerSessionImpl.java:1160)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.persistence.impl.journal.OperationContextImpl.executeOnCompletion(OperationContextImpl.java:168)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.server.impl.ServerSessionImpl.close(ServerSessionImpl.java:1152)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.freezeConnections(ActiveMQServerImpl.java:926)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.stop(ActiveMQServerImpl.java:741)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.stop(ActiveMQServerImpl.java:654)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.stop(ActiveMQServerImpl.java:547)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.jms.server.impl.JMSServerManagerImpl.stop(JMSServerManagerImpl.java:407)
>  [artemis-jms-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.integration.FileBroker.stop(FileBroker.java:79) 
> [artemis-cli-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at org.apache.activemq.artemis.cli.commands.Run$2.run(Run.java:166) 
> [artemis-cli-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
> 12:18:16,886 ERROR [org.apache.activemq.artemis.core.server] AMQ224065: 
> Failed to remove auto-created queue jms.queue.first: 
> java.lang.IllegalStateException: Cannot access JMS Server, core server is not 
> active
>         at 
> org.apache.activemq.artemis.jms.server.impl.JMSServerManagerImpl.checkInitialised(JMSServerManagerImpl.java:1416)
>  [artemis-jms-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.jms.server.impl.JMSServerManagerImpl.destroyQueue(JMSServerManagerImpl.java:766)
>  [artemis-jms-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.jms.server.impl.JMSServerManagerImpl$JMSQueueDeleter.delete(JMSServerManagerImpl.java:1639)
>  [artemis-jms-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.server.impl.AutoCreatedQueueManagerImpl$1.run(AutoCreatedQueueManagerImpl.java:50)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.utils.ReferenceCounterUtil.decrement(ReferenceCounterUtil.java:55)
>  [artemis-commons-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.server.impl.AutoCreatedQueueManagerImpl.decrement(AutoCreatedQueueManagerImpl.java:78)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.server.impl.QueueImpl.removeConsumer(QueueImpl.java:768)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl.removeItself(ServerConsumerImpl.java:500)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl.close(ServerConsumerImpl.java:446)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.server.impl.ServerSessionImpl.doClose(ServerSessionImpl.java:345)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.server.impl.ServerSessionImpl$1.done(ServerSessionImpl.java:1160)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.persistence.impl.journal.OperationContextImpl.executeOnCompletion(OperationContextImpl.java:168)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.server.impl.ServerSessionImpl.close(ServerSessionImpl.java:1152)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.freezeConnections(ActiveMQServerImpl.java:926)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.stop(ActiveMQServerImpl.java:741)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.stop(ActiveMQServerImpl.java:654)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.stop(ActiveMQServerImpl.java:547)
>  [artemis-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.jms.server.impl.JMSServerManagerImpl.stop(JMSServerManagerImpl.java:407)
>  [artemis-jms-server-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at 
> org.apache.activemq.artemis.integration.FileBroker.stop(FileBroker.java:79) 
> [artemis-cli-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
>         at org.apache.activemq.artemis.cli.commands.Run$2.run(Run.java:166) 
> [artemis-cli-1.2.0.amq-700007-redhat-1.jar:1.2.0.amq-700007-redhat-1]
> 12:18:16,946 INFO  [org.apache.activemq.artemis.core.server] AMQ221002: 
> Apache ActiveMQ Artemis Message Broker version 1.2.0.amq-700007-redhat-1 
> [f08081ff-3794-11e6-9e79-08002758ce8c] stopped, uptime 15.179 seconds
> {noformat}
> Apparently, qdrouterd does not close autolinks and the connector before it 
> exits. If I delete all these with {{qdmanage}} before I stop the broker, the 
> error is not printed.
> This is a problem because of https://issues.jboss.org/browse/ENTMQ-1701 
> Unable to consume from queue if the previous consumer did not exit cleanly



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to