You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ra...@apache.org on 2010/07/07 09:35:31 UTC
svn commit: r961272 -
/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Queue.java
Author: rajdavies
Date: Wed Jul 7 07:35:31 2010
New Revision: 961272
URL: http://svn.apache.org/viewvc?rev=961272&view=rev
Log:
fixed a potential hole around lock usage
Modified:
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Queue.java
Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Queue.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Queue.java?rev=961272&r1=961271&r2=961272&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Queue.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Queue.java Wed Jul 7 07:35:31 2010
@@ -1677,23 +1677,19 @@ public class Queue extends BaseDestinati
}
// Only add new messages, not already pagedIn to avoid multiple
// dispatch attempts
- pagedInMessagesLock.readLock().lock();
+ pagedInMessagesLock.writeLock().lock();
try {
resultList = new ArrayList<QueueMessageReference>(result.size());
for (QueueMessageReference ref : result) {
- if (!pagedInMessages.containsKey(ref.getMessageId())) {
- pagedInMessagesLock.readLock().unlock();
- pagedInMessagesLock.writeLock().lock();
+ if (!pagedInMessages.containsKey(ref.getMessageId())) {
pagedInMessages.put(ref.getMessageId(), ref);
- pagedInMessagesLock.readLock().lock();
- pagedInMessagesLock.writeLock().unlock();
resultList.add(ref);
} else {
ref.decrementReferenceCount();
}
}
} finally {
- pagedInMessagesLock.readLock().unlock();
+ pagedInMessagesLock.writeLock().unlock();
}
} else {
// Avoid return null list, if condition is not validated