[jboss-cvs] JBoss Messaging SVN: r7825 - branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Sep 24 08:13:50 EDT 2009


Author: gaohoward
Date: 2009-09-24 08:13:49 -0400 (Thu, 24 Sep 2009)
New Revision: 7825

Modified:
   branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/OrderingGroupGeneralTest.java
Log:
fix intermittent test failure


Modified: branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/OrderingGroupGeneralTest.java
===================================================================
--- branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/OrderingGroupGeneralTest.java	2009-09-24 10:24:36 UTC (rev 7824)
+++ branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/OrderingGroupGeneralTest.java	2009-09-24 12:13:49 UTC (rev 7825)
@@ -24,6 +24,7 @@
 package org.jboss.test.messaging.jms;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.Random;
 
 import javax.jms.Connection;
@@ -803,6 +804,8 @@
             
             session = conn.createSession(isTx, isTx ? Session.SESSION_TRANSACTED : Session.CLIENT_ACKNOWLEDGE);
             MessageConsumer cons = session.createConsumer(dest);
+
+            HashMap<String, TextMessage> redelivered = new HashMap<String, TextMessage>();
             
             //if we can't receive a msg in 10 sec, we think no message available
             //either all messages has been received, or something wrong.
@@ -813,11 +816,12 @@
                if (isTx)
                {
                   int rbIdx = rand.nextInt(4);
-                  //%25 change of rollback
-                  if ( rbIdx == 1 )
+                  //%25 change of rollback. only rollback once for each msg to avoid possible going to DLQ
+                  if ((rbIdx == 1) && (redelivered.get(rm.getText()) == null))
                   {
                      //roll back
                      session.rollback();
+                     redelivered.put(rm.getText(), rm);
                   }
                   else
                   {
@@ -831,11 +835,12 @@
                else
                {
                   int recoverIdx = rand.nextInt(4);
-                  //%25 chance of recover
-                  if (recoverIdx == 0)
+                  //%25 chance of recover. only recover once for each msg to avoid possible going to DLQ
+                  if ((recoverIdx == 0) && (redelivered.get(rm.getText()) == null))
                   {
                      //redeliver
                      session.recover();
+                     redelivered.put(rm.getText(), rm);
                   }
                   else
                   {
@@ -850,6 +855,7 @@
                
                rm = (TextMessage)cons.receive(10000);
             }
+            redelivered.clear();
             //receive finish, thread ends.
          }
          catch (JMSException e)




More information about the jboss-cvs-commits mailing list