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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Sep 24 06:24:37 EDT 2009


Author: gaohoward
Date: 2009-09-24 06:24:36 -0400 (Thu, 24 Sep 2009)
New Revision: 7824

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


Modified: branches/hudson_cp09/tests/src/org/jboss/test/messaging/jms/OrderingGroupGeneralTest.java
===================================================================
--- branches/hudson_cp09/tests/src/org/jboss/test/messaging/jms/OrderingGroupGeneralTest.java	2009-09-24 09:26:17 UTC (rev 7823)
+++ branches/hudson_cp09/tests/src/org/jboss/test/messaging/jms/OrderingGroupGeneralTest.java	2009-09-24 10:24:36 UTC (rev 7824)
@@ -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;
@@ -815,6 +816,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.
@@ -825,11 +828,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
                   {
@@ -843,11 +847,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
                   {
@@ -862,6 +867,7 @@
                
                rm = (TextMessage)cons.receive(10000);
             }
+            redelivered.clear();
             //receive finish, thread ends.
          }
          catch (JMSException e)




More information about the jboss-cvs-commits mailing list