activemq-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Costas Stergiou (Jira)" <>
Subject [jira] [Created] (ARTEMIS-3351) MessageConsumer gets stuck indefinitely when session is closed from management console
Date Wed, 16 Jun 2021 15:24:00 GMT
Costas Stergiou created ARTEMIS-3351:

             Summary: MessageConsumer gets stuck indefinitely when session is closed from
management console
                 Key: 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

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:
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:
try {
   wait(toWait); <<< 
} catch (InterruptedException e) {
   throw new ActiveMQInterruptedException(e);
} {code}

This message was sent by Atlassian Jira

View raw message