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