]
Yong Hao Gao commented on JBMESSAGING-1879:
-------------------------------------------
This issue could only happen in using multiple consumers on one distributed queue, where a
message could be sucked from one channel to more than one other channels at the same
time.
Duplicated Message delivery in message sucking process
------------------------------------------------------
Key: JBMESSAGING-1879
URL:
https://issues.jboss.org/browse/JBMESSAGING-1879
Project: JBoss Messaging
Issue Type: Bug
Components: JMS Clustering
Affects Versions: 1.4.0.SP3.CP12, 1.4.8.GA
Reporter: Yong Hao Gao
Assignee: Yong Hao Gao
Priority: Critical
Fix For: 1.4.0.SP3.CP13, 1.4.8.SP1
If a message is sucked over to another node and at the same time failover happens at the
source node, the source node will try to claim back messages in 'S' (sucking)
states. If the said message is claimed back, the message won't get sucked because
eventually the moveMessage operation on the DB will fail.
But in JDBCPersistenceManager.moveReference() it doesn't properly handle this,
resulting in the message can be sucked twice.
Also there is a flaw in JDBCPersistenceManager.claimMessagesInSuck(long), this
statement:
msgIDs.add(new ReferenceInfo(msgId, deliveryCount, sched));
should be:
if (rows == 1)
{
msgIDs.add(new ReferenceInfo(msgId, deliveryCount, sched));
}
without the if condition, a sucked message also can be re-delivered the second time.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: