User: dmaplesden
  Date: 01/10/22 13:38:51

  Modified:    src/main/org/jboss/mq/server Tag: Branch_2_4 BasicQueue.java
  Log:
  Backport bug fix for race condition to 2.4 branch
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.4.2.2   +30 -27    jbossmq/src/main/org/jboss/mq/server/BasicQueue.java
  
  Index: BasicQueue.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbossmq/src/main/org/jboss/mq/server/BasicQueue.java,v
  retrieving revision 1.4.2.1
  retrieving revision 1.4.2.2
  diff -u -r1.4.2.1 -r1.4.2.2
  --- BasicQueue.java   2001/08/23 03:57:12     1.4.2.1
  +++ BasicQueue.java   2001/10/22 20:38:51     1.4.2.2
  @@ -30,7 +30,7 @@
    * @author     Norbert Lataille ([EMAIL PROTECTED])
    * @author     David Maplesden ([EMAIL PROTECTED])
    * @created    August 16, 2001
  - * @version    $Revision: 1.4.2.1 $
  + * @version    $Revision: 1.4.2.2 $
    */
   //abstract public class BasicQueue implements Runnable {
   public class BasicQueue {
  @@ -146,34 +146,37 @@
         throws JMSException {
         SpyMessage message = null;
         Selector selector = sub.getSelector();
  -      if ( selector == null ) {
  -         synchronized ( messages ) {
  -            if ( messages.size() != 0 ) {
  -               message = ( SpyMessage )messages.first();
  -               messages.remove( message );
  -            }
  -         }
  -      } else {
  -         synchronized ( messages ) {
  -            Iterator i = messages.iterator();
  -            while ( i.hasNext() ) {
  -               SpyMessage m = ( SpyMessage )i.next();
  -               if ( selector.test( m ) ) {
  -                  message = m;
  +      synchronized ( receivers ) {
  +         if ( selector == null ) {
  +            synchronized ( messages ) {
  +               if ( messages.size() != 0 ) {
  +                  message = ( SpyMessage )messages.first();
                     messages.remove( message );
  -                  break;
  +               }
  +            }
  +         } else {
  +            synchronized ( messages ) {
  +               Iterator i = messages.iterator();
  +               while ( i.hasNext() ) {
  +                  SpyMessage m = ( SpyMessage )i.next();
  +                  if ( selector.test( m ) ) {
  +                     message = m;
  +                     messages.remove( message );
  +                     break;
  +                  }
                  }
               }
            }
  -      }
  -
  -      if ( message == null ) {
  -         if ( wait ) {
  -            addToReceivers( sub );
  +         
  +         if ( message == null ) {
  +            if ( wait ) {
  +               addToReceivers( sub );
  +            }
  +         } else {
  +            setupMessageAcknowledgement( sub, message );
            }
  -      } else {
  -         setupMessageAcknowledgement( sub, message );
         }
  +
         return message;
      }
   
  @@ -331,11 +334,11 @@
                  }
               }
            }
  -      }
   
  -      //else add to message list
  -      synchronized ( messages ) {
  -         messages.add( message );
  +         //else add to message list
  +         synchronized ( messages ) {
  +            messages.add( message );
  +         }
         }
      }
   }
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to