project_key: SOA The MessageSucker is responsible for migrating messages between different members of a cluster, it is a consumer to the remote queue from which it receives messages destined for the queue on the local cluster member. The onMessage routine, at its most basic, does the following - bookkeeping for the incoming message, including expiry - acknowledge the incoming message - attempt to deliver to the local queue When the delivery fails, the result is the *appearance* of lost messages. Those messages which are processed during the failure are not redelivered, but they still exist in the database. The only way I have found to trigger the redelivery of those messages is to redeploy the queue containing the messages and/or restart that app server. Obviously neither approach is acceptable. In order to trigger the error I created a SOA cluster which *only* shared the JMS database, and no other. I modified the helloworld quickstart to display a counter of messages consumed, clustered the *esb* queue, and then used byteman to trigger the faults. The byteman rule is as follows, the quickstart will be attached. RULE throw every fifth send INTERFACE ProducerDelegate METHOD send AT ENTRY IF callerEquals("MessageSucker.onMessage", true) && (incrementCounter("throwException") % 5 == 0) DO THROW new IllegalStateException("Deliberate exception") ENDRULE This results in an exception being thrown for every fifth message. Once the delivery has quiesced, examine the JBM_MSG and JBM_MSG_REF tables to see the messages which have not been delivered. The clusters are ports-default and ports-01, the client seeds the gateway by sending 300 messages to the default. Adding up the counter from each server *plus* the message count from JBM_MSG results in 300 (or multiples thereof for more executions).
The problem seems to exist in SOA 5.0.0, SOA 5.0.2 and SOA 5.1.0 ER3
quickstart
Attachment: Added: helloworld.zip
Link: Added: This issue depends JBPAPP-5280
The JBoss Messaging team is working on a resolution. If that is a One Off patch, we will include it in SOA 5.1.0.
The current issues that need checking and porting, if not already present in 1.4.7, are the following. JBMESSAGING-1822, JBMESSAGING-1805, JBMESSAGING-1809, and JBMESSAGING-1774. There are also two races which need to be included, JBMESSAGING-1828 and JBMESSAGING-1831
Link: Added: This issue depends JBPAPP-5505
Link: Added: This issue related SOA-2578
Resolved with revision 7524 of: build-tools/builders/eap/post-patch/patch_db_persistance_conf.xml Commit message: SOA-2455/SOA-2578 Add the patches from JBPAPP-5505 to jboss-messaging-client.jar, jboss-messaging.jar and the &-persistence-service.xml files.
Labels: Added: rn-open
Release Notes Docs Status: Added: Not Yet Documented
Writer: Added: dlesage
Reopening until we get confirmation from EAP QE team.
QA passed, no regressions.
Temporarily reopening to update release note status.
Release Notes Docs Status: Removed: Not Yet Documented Added: Documented as Resolved Issue Release Notes Text: Added: https://issues.jboss.org/browse/SOA-2455 The MessageSucker is responsible for migrating messages between different members of a cluster, it is a consumer of the remote queue from which it receives messages destined for the queue on the local cluster member. If it stalls, failed messages are not redelivered. They remain in the database. Fixes have been made to JBoss Messaging so that a stall will trigger the redelivery of these messages.
Reopening to modify release note text, will set back to Closed -> Done shortly.
Setting back to Closed -> Done, having modified release note text.
Release Notes Text: Removed: https://issues.jboss.org/browse/SOA-2455 The MessageSucker is responsible for migrating messages between different members of a cluster, it is a consumer of the remote queue from which it receives messages destined for the queue on the local cluster member. If it stalls, failed messages are not redelivered. They remain in the database. Fixes have been made to JBoss Messaging so that a stall will trigger the redelivery of these messages. Added: The MessageSucker migrates messages between different members of a cluster. It consumes from a remote queue, from which it receives messages destined for the queue on the local cluster member. If it stalls, failed messages are not redelivered, and remain in the database. JBoss Messaging has been modified so that a stall triggers message redelivery.