[
https://issues.apache.org/jira/browse/QPID-8384?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16980896#comment-16980896
]
ASF subversion and git services commented on QPID-8384:
-------------------------------------------------------
Commit ea2c1574f40561bd782b258bdf67aec61ad5986a in qpid-broker-j's branch
refs/heads/master from Alex Rudyy
[ https://gitbox.apache.org/repos/asf?p=qpid-broker-j.git;h=ea2c157 ]
QPID-8384: [Broker-J] Try to remove LVQ entry from the latest value map after
setting the latest value reference if entry is deleted before the reference is
set
> [Broker-J] LastValueQueueList can leak deleted queue entries
> ------------------------------------------------------------
>
> Key: QPID-8384
> URL: https://issues.apache.org/jira/browse/QPID-8384
> Project: Qpid
> Issue Type: Task
> Components: Broker-J
> Affects Versions: 0.17, 0.18, 0.19, 0.20, 0.21, 0.22, 0.23, 0.24, 0.25,
> 0.26, 0.27, 0.28, 0.29, 0.30, 0.31, 0.32, qpid-java-6.0, qpid-java-6.0.1,
> qpid-java-6.0.2, qpid-java-6.0.3, qpid-java-6.0.4, qpid-java-6.0.5,
> qpid-java-6.1, qpid-java-6.0.6, qpid-java-6.1.1, qpid-java-6.1.2,
> qpid-java-6.0.7, qpid-java-6.1.3, qpid-java-6.0.8, qpid-java-6.1.4,
> qpid-java-broker-7.0.0, qpid-java-6.1.5, qpid-java-broker-7.0.1,
> qpid-java-6.1.7, qpid-java-broker-7.1.0, qpid-java-broker-7.0.4,
> qpid-java-broker-7.0.5, qpid-java-broker-7.0.6, qpid-java-broker-7.0.7,
> qpid-java-6.1.8, qpid-java-broker-7.1.1, qpid-java-broker-7.1.2,
> qpid-java-broker-7.0.8, qpid-java-broker-7.1.3, qpid-java-broker-7.1.4
> Reporter: Alex Rudyy
> Assignee: Alex Rudyy
> Priority: Major
> Fix For: qpid-java-broker-7.1.6
>
>
> Qpid Broker-j can run out of heap memory due to leaking deleted LVQ entries
> via {{LastValueQueueList#_latestValuesMap}}.
> The deleted queue entry can be left in
> {{LastValueQueueList#_latestValuesMap}} in result of race between enqueing
> thread and consuming or management thread, where entry is deleted. An LVQ
> entry is removed from {{LastValueQueueList#_latestValuesMap}}, when
> {{_latestValueReference}} is set on the entry as part of invocation
> {{LastValueQueueList#add(...)}}. If {{_latestValueReference}} is not set in
> result of unfortunate thread scheduling, the LVQ entry might not be removed
> from the {{LastValueQueueList#_latestValuesMap}} as part of invocation of
> {{LastValueQueueList$ConflationQueueEntry#onDelete}}.
> In some unlucky circumstances the deleted entry can hold a reference to
> another deleted entry. They can makes a chain of deleted entries, which is
> referenced from {{LastValueQueueList#_latestValuesMap}}. The latter prevents
> the Garbage Collector from freeing the memory occupied by the chain of
> deleted entries.
> The solution for this problem seems require adding into
> {{LastValueQueueList#add(...)}} after setting of
> {{LastValueQueueList$ConflationQueueEntry#_latestValueReference}} a call to
> {{LastValueQueueList$ConflationQueueEntry#onDelete}}, when the entry state is
> {{DELETED}}.
> The reason why deleted LVQ entries remained linked together is not clear yet.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]