You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Keith Wall (JIRA)" <ji...@apache.org> on 2016/03/29 15:20:25 UTC

[jira] [Updated] (QPID-7082) [Java Broker] Created AccessControllerContext for SystemTasks should not reference current context

     [ https://issues.apache.org/jira/browse/QPID-7082?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Keith Wall updated QPID-7082:
-----------------------------
    Fix Version/s: qpid-java-6.1

> [Java Broker] Created AccessControllerContext for SystemTasks should not reference current context
> --------------------------------------------------------------------------------------------------
>
>                 Key: QPID-7082
>                 URL: https://issues.apache.org/jira/browse/QPID-7082
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Broker
>    Affects Versions: qpid-java-6.0, qpid-java-6.0.1
>            Reporter: Alex Rudyy
>             Fix For: qpid-java-6.1
>
>         Attachments: QPID-7082-Stop-referencing-current-context-from-queue-immediate-delivery-context.diff
>
>
> The code within {code}SecurityManager.getSystemTaskControllerContext(String taskName, Principal principal){code} creates a context which inherits from the current thread AcessControllerContext.  This current context may contain references to the current user / connection / session.  On queue creation an instance of AcessControllerContext created with }SecurityManager.getSystemTaskControllerContext is referenced from Queue#_immediateDeliveryContext. If queue is created via messaging layer, the existing AccessControlContext can hold references to ConnectionPrincipal and SessionPrincipal and their connection and session object accordingly.  As result, Queue#_immediateDeliveryContext can refer  ConnectionPrincipal and SessionPrincipa preventing garbage collection of corresponding AMQPConnection and AMQSessionModel objects for the duration of the queue life. With lots of long lived queues that were created by lots of different connections the broker memory consumption might grow in time and eventially Broker can run OOM if not bounced.
> The AccessContollerContext created by the method should not inherit and context, and thus no references to users/connection/sessions etc. will be retained.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org