MasterBroker logs the same 'Slave Failed' error for all exceptions, whether or
not the Master/Slave connection has been terminated
----------------------------------------------------------------------------------------------------------------------------------
Key: AMQ-2459
URL: https://issues.apache.org/activemq/browse/AMQ-2459
Project: ActiveMQ
Issue Type: Bug
Components: Broker
Affects Versions: 5.3.0, 5.2.0
Reporter: Kyle Anderson
Priority: Minor
The sendSyncToSlave method of MasterBroker on line 393 logs a 'Slave Failed'
error if the slave returns an exception response for a particular replicated
command.
This doesn't cause master/slave communication to stop, but it's the same error
that's logged when a slave dies. This can cause some confusion.
I found this issue pops up when recovering a master from a slave's data
directory.
1. Create a producer & consumer on the master/slave (where master is set to
wait for slave)
2. Send a few messages to the master/slave
3. Kill the master/slave, and recover from the slave's data directory, and
restart them
4. Receive messages on the consumer (whose failover connection was waiting for
the master/slave during the recovery)
Any messages that were pre-fetched on the consumer will cause the master to
report that the Slave Failed with "Could not correlate acknowledgment with
dispatched message". Perhaps this points to an issue in PrefetchSubscription
too - but aside from the initial noise, the recovery works as expected with no
message loss.
Incidentally, I would think that while the exception repose from
sendSyncToSlave shouldn't stop the MasterBroker, the catch all (on line 395)
should stop processing the same way that a sendAsyncToSlave failure does.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.