Bug 742187

Summary: MDBs on EAP cluster receive more messages when one EAP node is killed
Product: Red Hat Enterprise MRG Reporter: Jiri Sedlacek <jsedlace>
Component: qpid-jcaAssignee: messaging-bugs <messaging-bugs>
Status: CLOSED DUPLICATE QA Contact: MRG Quality Engineering <mrgqe-bugs>
Severity: high Docs Contact:
Priority: unspecified    
Version: 2.0CC: oskutka, wprice
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-10-13 13:14:30 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Jiri Sedlacek 2011-09-29 10:43:28 UTC
Description of problem: When the same MDB is deployed on two (or more) EAP servers and one is killed, number of received and stored messages is greater then number of sent messages.

Steps to Reproduce:
1. checkout https://svn.devel.redhat.com/repos/jboss-qa/mrg/tests/ha
2. fix annotation in
/mdb-ejb/src/main/java/org/jboss/test/mdb/MRGJCAMessageBean.java to point to
your MRG server
3. replace hibernate dialect in /mdb-ejb/src/main/resources/META-INF/persistence.xml (if you use another db then mysql51)
4. compile with mvn -DskipTests clean package
5. configure eap to use mysql51 db for defaultDS and defaultXADS (or another db with xa transactions support)
6. copy mdb/mdb-test/target/ha-kill-mrg-test.ear to deploy directory of EAP 5.1.1
(profile production)
7. checkout https://svn.devel.redhat.com/repos/jboss-qa/mrg/qpid-java-jca
8. configure qpid-java-jca/qpid-jca-ds.xml to point to your MRG server anc copy it with qpid-ra.rar to deploy directory of eap production profile
9. start mrg //enabled to store messages through restart
10. copy production profile to production2
11. replace hibernate.hbm2ddl.auto value in /mdb-ejb/src/main/resources/META-INF/persistence.xml to "validate", build it by maven once-again and copy mdb/mdb-test/target/ha-kill-mrg-test.ear to production2 deploy directory (this is because hibernate on second node cannot create the db schema again).
12. Start EAP production profile by the command  bin/run.sh -c production -g DocsPartition -u 239.255.48.232 -Djboss.messaging.ServerPeerID=1 -Djboss.service.binding.set=ports-default   and wait till it's started completely
13. Start EAP production2 profile by the command bin/run.sh -c production2 -g testpart -u 239.255.48.232 -Djboss.messaging.ServerPeerID=2 -Djboss.service.binding.set=ports-01      and wait till it's started completely 
14. Go to http://localhost:8080/servlet/mrgtest?op=send&count=2000 - this send 2000 messages to queue, that is consumed by both MDBs
15. while the MDBs receive messages (on both nodes, you should see in the server.log), kill second node (production2) by kill -9 ${correct_pid}
16. after all messages are processed, check number of messages in db by http://localhost:8080/servlet/mrgtest?op=get-count, in db will be more messages than it was sent.
  
Actual results:
Received more messages that were sent.

Expected results:
To receive exact amount of messages (number, which was sent)


The similar behavior is when killed (second) EAP node is restarted again.

Comment 1 Weston M. Price 2011-10-13 13:14:30 UTC

*** This bug has been marked as a duplicate of bug 742150 ***