[ https://issues.apache.org/jira/browse/ARTEMIS-3351?focusedWorklogId=962303&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-962303 ]
ASF GitHub Bot logged work on ARTEMIS-3351: ------------------------------------------- Author: ASF GitHub Bot Created on: 18/Mar/25 13:17 Start Date: 18/Mar/25 13:17 Worklog Time Spent: 10m Work Description: jbertram opened a new pull request, #5562: URL: https://github.com/apache/activemq-artemis/pull/5562 (no comment) Issue Time Tracking ------------------- Worklog Id: (was: 962303) Remaining Estimate: 0h Time Spent: 10m > Explicitly disconnect consumers when closing session administratively > --------------------------------------------------------------------- > > Key: ARTEMIS-3351 > URL: https://issues.apache.org/jira/browse/ARTEMIS-3351 > Project: ActiveMQ Artemis > Issue Type: Bug > Components: Broker > Affects Versions: 2.17.0 > Environment: Using Artemis 2.17.0, out-of-the box installation, > default instance, clean install. > Reporter: Costas Stergiou > Assignee: Justin Bertram > Priority: Major > Labels: pull-request-available > Time Spent: 10m > Remaining Estimate: 0h > > When a session is closed from the Management console (_Sessions_ tab -> > _Close_ button), the consumer never gets notified. > Bug is reproducible with JMS and Core. It happens if the consumer loops in a > _receive(timeout)_ or _receiveNoWait()._ It also happens when the > _setMessageListener()_ has been called for callback-style reception. > To reproduce: > # create a consumer (JMS or Core) > # use a thread to loop indefinitely using _consumer.receive(1000);_ > # create a producer, send messages, verify it all works > # from the Management Console, kill/close the session corresponding to the > consumer. > # The consumer.receive*() method never returns after the session is closed. > If using the _setMessageListener_() no more callbacks occur when new messages > arrive. No exception thrown whatsoever, nothing reported in > _connection.setExceptionListener()_ > A quick look at the code show the thread waiting on this stack: > {code:java} > wait:-1, Object (java.lang) > receive:267, ClientConsumerImpl (org.apache.activemq.artemis.core.client.impl) > receiveImmediate:411, ClientConsumerImpl > (org.apache.activemq.artemis.core.client.impl) > getMessage:211, ActiveMQMessageConsumer > (org.apache.activemq.artemis.jms.client) > receiveNoWait:139, ActiveMQMessageConsumer > (org.apache.activemq.artemis.jms.client) > lambda$createConsumer$0:74, ActiveMQCommon (com.imagetrust.activemq) > run:-1, ActiveMQCommon$$Lambda$15 (com.imagetrust.activemq) > call:511, Executors$RunnableAdapter (java.util.concurrent) > run:266, FutureTask (java.util.concurrent) > runWorker:1149, ThreadPoolExecutor (java.util.concurrent) > run:624, ThreadPoolExecutor$Worker (java.util.concurrent) > run:748, Thread (java.lang) {code} > Looks like _ClientConsumerImpl::receive_ waits indefinitely (or does an > indefinite loop) in line 267: > {code:java} > try { > wait(toWait); <<< > } catch (InterruptedException e) { > throw new ActiveMQInterruptedException(e); > } {code} > -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@activemq.apache.org For additional commands, e-mail: issues-h...@activemq.apache.org For further information, visit: https://activemq.apache.org/contact