[ https://issues.apache.org/jira/browse/SLING-7969?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Timothee Maret updated SLING-7969: ---------------------------------- Fix Version/s: Discovery Commons 1.0.26 > 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 > Fix For: Discovery Commons 1.0.26 > > Attachments: Screenshot 2022-03-07 at 1.05.33 PM.png, Screenshot > 2022-03-07 at 1.14.57 PM-1.png, Screenshot 2022-03-07 at 1.14.57 PM.png, > Screenshot 2022-03-07 at 1.18.07 PM.png, Screenshot 2022-03-07 at 1.18.16 > 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 > > Time Spent: 20m > Remaining Estimate: 0h > > 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)