You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@oozie.apache.org by "Andras Salamon (JIRA)" <ji...@apache.org> on 2018/12/20 14:15:00 UTC

[jira] [Commented] (OOZIE-3409) Oozie Server : Possible memory leak in EL evaluation

    [ https://issues.apache.org/jira/browse/OOZIE-3409?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16725879#comment-16725879 ] 

Andras Salamon commented on OOZIE-3409:
---------------------------------------

Yes, {{org.apache.commons.el.ExpressionEvaluatorImpl}} has static maps which never gets clear. There is a constructor in the class which takes a boolean {{pBypassCache}} argument, but it only bypass the reading of the cache, not the writing: [http://svn.apache.org/viewvc/commons/dormant/el/trunk/src/java/org/apache/commons/el/ExpressionEvaluatorImpl.java?view=markup#l256]

So theoretically it's true that adding more and more different EL expression string will result an OOM. I But it will take probably a really large number to reach that point.

Fixing that would not be easy, since commons-el is alrady dormant (latest release was in 2003).

> Oozie Server : Possible memory leak in EL evaluation
> ----------------------------------------------------
>
>                 Key: OOZIE-3409
>                 URL: https://issues.apache.org/jira/browse/OOZIE-3409
>             Project: Oozie
>          Issue Type: Bug
>    Affects Versions: 5.1.0
>            Reporter: Praneeth
>            Priority: Major
>
> I have noticed that there is a potential memory leak in the Oozie server due to one of its dependencies - {{commons-el:commons-el:1.0}}. Our oozie servers have been running out of memory occasionally. It happens more often when we have more activity. Upon analysis of the heap dump, it seems that the culprit here is the {{org.apache.commons.el.ExpressionEvaluatorImpl}} from {{commons-el}} which is used in the Oozie server through {{org.apache.oozie.util.ELEvaluator}} [1] . {{ExpressionEvaluatorImpl}} uses a static {{Map}} [2] to cache the EL evaluations. This map never gets cleared, eventually taking up all the memory. So, in an environment with heavy usage and long running oozie servers, this would lead to an OOM. The configurations for workflow actions we have are possibly larger than normal which is worsening the situation as the Map has to maintain larger strings.
>  # [https://github.com/apache/oozie/blob/release-5.1.0/core/src/main/java/org/apache/oozie/util/ELEvaluator.java#L143]
>  # [http://svn.apache.org/viewvc/commons/dormant/el/trunk/src/java/org/apache/commons/el/ExpressionEvaluatorImpl.java?view=markup#l94]



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)