You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Gary Tully (JIRA)" <ji...@apache.org> on 2014/04/30 18:10:24 UTC
[jira] [Resolved] (AMQ-5136) MemoryUsage is not decremented on a
JMS topic when rolling back a transacted session
[ https://issues.apache.org/jira/browse/AMQ-5136?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Gary Tully resolved AMQ-5136.
-----------------------------
Resolution: Fixed
thanks for the nice test.
fix and test in http://git-wip-us.apache.org/repos/asf/activemq/commit/c5c14953
> MemoryUsage is not decremented on a JMS topic when rolling back a transacted session
> ------------------------------------------------------------------------------------
>
> Key: AMQ-5136
> URL: https://issues.apache.org/jira/browse/AMQ-5136
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker
> Affects Versions: 5.8.0, 5.9.0
> Reporter: Sergiy Barlabanov
> Assignee: Gary Tully
> Fix For: 5.10.0
>
> Attachments: activemqbug.zip
>
>
> When sending a message to a topic using a transacted session, memory usage is not decremented correctly when session.rollback is called. It is decremented on commit but not on rollback. This has quite bad consequences since after some time depending on the system memory usage settings and amount of rolled back messages, the broker starts to reject messages saying that Usage Manager memory limit is reached. The only solution is to restart the broker.
> I created a small Maven project (see the attachment) with a unit test starting an embedded broker and two test methods: one sending messages with session.commit and another with session.rollback(). The last one fails to assert the memory usage. In the output one can see quite a lot of error logs written by ActiveMQ. The problem is reproducible with 5.8.0 and 5.9.0.
> The problem seems to be in org.apache.activemq.broker.region.Topic#doMessageSend method where a transaction synchronization is registered. In the transaction synchronization only afterCommit is supplied, but no afterRollback. So there seems to be nobody calling message.decrementReferenceCount().
--
This message was sent by Atlassian JIRA
(v6.2#6252)