activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From <>
Subject Pure Master/Slave Bug? Expired messages not replicated to Slave - update
Date Mon, 05 Jul 2010 13:59:17 GMT
Update: Same problem with ActiveMQ 5.3.0, current 5.3.3- and current 5.4-SNAPSHOT.

Any ideas?


-----Urspr√ľngliche Nachricht-----
Von: Weber, Andreas, M-ED 
Gesendet: Montag, 5. Juli 2010 09:47
An: ''
Betreff: Pure Master/Slave Bug? Expired messages not replicated to Slave


I use a Pure Master/Slave configuration with ActiveMQ 5.3.2.
Master/Slave both use the same DLQ configuration with: processExpired="true" processNonPersistent="true"

The normal Master/Slave processing seems to work correctly, actions on Master are always replicated
to the Slave.
But there's a problem: Expired messages do go to the Master's DLQ, but this is not adapted
in the Slave.

I debugged in the (Slave's) Code and found the appropriate send-to-DLQ-Command/Message arriving
at the MasterConnector.
But in further processing this message is filtered out as a duplicate(?) (TransactionBroker.send()
resp. ActiveMQMessageAudit.isDuplicate()). It seems that this ProducerSequenceBit, which is
checked there, was already set... but here I'm a little bit lost in the code.

So, any ideas why this happens?

Some further note/question: A Slave also seems to have its own Timer to look for expired messages
in the queues, even if the Master is still alive. Is that really intended? 
So in the szenario above, the Slave also generates a message to the DLQ for its expired item.
But this is filtered out as a duplicate, too. That may be ok here if "normal replication"
would work, but I'm generally not sure if a Slave should really run it's own timeout checking
of expired messages at all, as long as he's not become a Master.

Best regards,

View raw message