Cloned from https://issues.jboss.org/browse/JBEAP-3419: Test scenario: 1. Start live server with replicated journal and queue testQueue0 2. Send 500 large messages to testQueue0 t live 3. Start backup server and receiving messages from testQueue0 (session CLIENT_ACKNOWLEDGE) 4. Before backup is announced/synchronized with live, cleanly shutdown backup 5. Wait until receiver consumes all messages Expected result: Receiver consumed 500 messages. No losses or duplicates. Actual result: There are lost messages. Client did not receive all messages. Messages are not in the journal of live server after the test. By tracking message Id of the lost message, the message was send to receiver. Because it's large message, receiver tries to ack the message right away. As backup is already shutdown (step 4) and live cannot sync message acknowledge with backup, live does not respond to client until connection with backup times out. If this timeout for cluster connection is longer than receiver's call-timeout then receiver gets JMSException like from consumer.receive() method: 16:26:12,983 Thread-27 ERROR [org.jboss.qa.hornetq.apps.clients.ReceiverClientAck:341] RETRY receive for host: 127.0.0.1, Trying to receive message with count: 57 javax.jms.JMSException: AMQ119014: Timed out after waiting 30,000 ms for response when sending packet 41 at org.apache.activemq.artemis.core.protocol.core.impl.ChannelImpl.sendBlocking(ChannelImpl.java:350) at org.apache.activemq.artemis.core.protocol.core.impl.ActiveMQSessionContext.sendACK(ActiveMQSessionContext.java:421) at org.apache.activemq.artemis.core.client.impl.ClientSessionImpl.acknowledge(ClientSessionImpl.java:696) at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.doAck(ClientConsumerImpl.java:1035) at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.acknowledge(ClientConsumerImpl.java:702) at org.apache.activemq.artemis.core.client.impl.ClientMessageImpl.acknowledge(ClientMessageImpl.java:96) at org.apache.activemq.artemis.core.client.impl.ClientMessageImpl.acknowledge(ClientMessageImpl.java:38) at org.apache.activemq.artemis.jms.client.ActiveMQMessageConsumer.getMessage(ActiveMQMessageConsumer.java:212) at org.apache.activemq.artemis.jms.client.ActiveMQMessageConsumer.receive(ActiveMQMessageConsumer.java:119) at org.jboss.qa.hornetq.apps.clients.ReceiverClientAck.receiveMessage(ReceiverClientAck.java:333) at org.jboss.qa.hornetq.apps.clients.ReceiverClientAck.run(ReceiverClientAck.java:169) Caused by: ActiveMQConnectionTimedOutException[errorType=CONNECTION_TIMEDOUT message=AMQ119014: Timed out after waiting 30,000 ms for response when sending packet 41] ... 11 more Problem is that message was acked on live server and thus never redelivered to consumer again.
Andy Taylor <ataylor> updated the status of jira JBEAP-3419 to Resolved
Miroslav Novak <mnovak> updated the status of jira JBEAP-3419 to Reopened
Triage: closing as this one is for Artemis, fixed in 7.0.2, not applicable for 6.4.