[ https://issues.apache.org/activemq/browse/AMQ-597?page=all ]
Hiram Chirino resolved AMQ-597:
-------------------------------
Fix Version: 3.2.4
4.0
Resolution: Fixed
Hi Matthew,
I think this was fixed since the 3.1 release could you check the 3.2.4 release?
If not the 4.0 release has revamped is memory managment is much better. I
would recommed you upgrade to 4.0 ASAP.
> NullPointerException in MemoryBoundedMessageCache
> -------------------------------------------------
>
> Key: AMQ-597
> URL: https://issues.apache.org/activemq/browse/AMQ-597
> Project: ActiveMQ
> Type: Bug
> Versions: 3.1
> Environment: Windows XP, Java 1.4.1_01
> Reporter: Matthew Vincent
> Fix For: 4.0, 3.2.4
>
>
> If you put two messages in the MemoryBoundedMessageCache with the same
> message id, the MemoryBoundedMessageCache puts itself into an inconsistent
> state, which causes a NullPointerException in removeOldest(), on the
> following line:
> CacheNode node = (CacheNode) messages.remove(messageID);
> decrementMemoryUsed(node.message);
> This is because there is no corresponding CacheNode entry for the given
> messageID.
> The problem is caused by the following block of code, in put(String,
> ActiveMQMessage):
> CacheNode oldNode = (CacheNode) messages.put(messageID, newNode);
> if( oldNode !=null ) {
> lruList.remove(oldNode);
> decrementMemoryUsed(oldNode.message);
> }
> When it removes the existing CacheNode from the messages map, it fails to
> remove it from the lruList, causing its entry to be left in the lruList. This
> means that the lruList will now contain two entries for the same message id.
> The first one to be removed will remove the only entry in the messages map,
> and will be fine, but the second one to be removed will cause a
> NullPointerException, since there is now no corresponding CacheNode in the
> messages map.
> To fix all that needs to be done is change the line:
> lruList.remove(oldNode);
> to be
> lruList.remove(oldNode.entry);
> so that the entry is correctly removed from the lruList.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://issues.apache.org/activemq/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira