• Type: Bug
    • Status: Closed
    • Severity: High
    • Resolution: Fixed
    • Affects Version/s: 1.7.1.GA
    • Fix Version/s: 3.0.0.GA
    • Component/s: Scheduler
    • Labels:
    • Notice:
      When an issue is open, the "Fix Version/s" field conveys a target, not necessarily a commitment. When an issue is closed, the "Fix Version/s" field conveys the version that the issue was fixed in.


      We have a pentaho 1.7.1.GA running for quite a while, executing a quartz job every minute.
      After some days we can see increasing memory use, up to the point of hitting OOM.

      The leaked objects are instances of StandaloneSession, SolutionRepository, and RuntimeRepository.

      The leak is caused by QuartzExecute, which creates a new StandaloneSession for every job execution.
      When building the output, we eventually end up in PentahoSystem.getSolutionRepository() and .getRuntimeRepository(), which each create a new object as their scope is "session" in our (default) configuration.

      Both SolutionRepository and RuntimeRepository (as well as ContentRepository) have a method setSession() that puts the current session into a threadlocal.
      If this is called with the StandaloneSession created by QuartzExecute, we have a leak:

      The thread's ThreadLocalMap will now refer to the session (both via the new Solution- and RuntimeRepository), and the session refers to the repositories via it's attributes member.
      This will never get cleared.

      Workaround that seems to work for us: set the scope of the repositories to "global" in pentaho.xml.


          Issue Links



              • Assignee:
                jpshedesky Jared Pshedesky (Inactive)
                ankon Andreas Kohn
              • Votes:
                2 Vote for this issue
                3 Start watching this issue


                • Created: