[
https://issues.apache.org/jira/browse/SLING-7969?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sagar Miglani updated SLING-7969:
---------------------------------
Attachment: Screenshot 2022-03-07 at 1.14.57 PM.png
> Memory leak in DiscoveryLiteDescriptor
> --------------------------------------
>
> Key: SLING-7969
> URL: https://issues.apache.org/jira/browse/SLING-7969
> Project: Sling
> Issue Type: Bug
> Components: Discovery
> Affects Versions: Discovery Commons 1.0.20
> Reporter: Timothee Maret
> Assignee: Timothee Maret
> Priority: Major
> Labels: discovery
> Attachments: Screenshot 2022-03-07 at 1.05.33 PM.png, Screenshot
> 2022-03-07 at 1.14.57 PM.png, Screenshot 2022-03-07 at 12.26.11 PM.png,
> org.apache.sling.commons.johnzon-1.1.11-SLING-7969.jar,
> org.apache.sling.discovery.commons-1.0.23-SLING-7969.jar
>
>
> As identified in [~volteanu]'s adaptTo
> [presentation|https://adapt.to/2018/en/schedule/sling-memory-deep-dive.html],
> it seems that Sling Discovery on Oak is consuming 42MB of RAM on a standard
> instance.
> Sling discovery deals with transient states (the views, leases, etc.) and is
> not caching significant amount of data. The 42MB figure for the discovery
> feature seems like a symptom of a memory leak.
> [~volteanu] shared in his presentation that the 42MB worth of RAM was mainly
> consumed by a Json Factory reference. There is one static JsonReaderFactory
> in the discovery commons module, in the
> [DiscoveryLiteDescriptor|https://github.com/apache/sling-org-apache-sling-discovery-commons/blob/master/src/main/java/org/apache/sling/discovery/commons/providers/spi/base/DiscoveryLiteDescriptor.java].
> Looking at the code, it seems that each invocation of the
> [getDescriptorFrom|https://github.com/apache/sling-org-apache-sling-discovery-commons/blob/master/src/main/java/org/apache/sling/discovery/commons/providers/spi/base/DiscoveryLiteDescriptor.java#L51]
> method creates a JSON reader but never close it. This may may leave
> resources behind as hinted by the description of the
> [close|https://docs.oracle.com/javaee/7/api/javax/json/JsonReader.html#close--]
> method in the API. AFAIK, the
> [getDescriptorFrom|https://github.com/apache/sling-org-apache-sling-discovery-commons/blob/master/src/main/java/org/apache/sling/discovery/commons/providers/spi/base/DiscoveryLiteDescriptor.java#L51]
> is invoked periodically on a relatively high frequency (< seconds) which may
> be the trigger for the leak on all instances.
> This is only a supposition for now, it should be investigated further, simply
> by running a patched version of \{{org.apache.sling.discovery.commons}} that
> make sure each JSON reader is properly closed.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)