• Type: Bug
    • Status: Closed
    • Priority: Minor
    • Resolution: Won't Fix
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: Engine
    • Security Level: Users (General product issues)
    • Labels:
    • QA Testing:


      It seems there is a major problem with direct memory buffers in CloverETL or java, which are used by default for edge buffers. In case many graphs with lots of edges are executed, allocated direct memory size can grow up to size of java heap if enough RAM is available, otherwise Clover will use heap. The direct buffers are freed after GC run, however, the resident memory (RES in `top`) of the java process used by direct memory is not freed. After all threads from the previous job are closed (after ~1 minute), new direct memory is allocated by next run and the resident java process size grows. You can repeat this process until there is no more free RAM on the server. The resident memory is truly allocated because when I tried to start some other application, my java process was killed by kernel OOM Killer.

      The attached jobflow is able to utilize majority of system memory in quite short time using the run – wait 1 minute – run strategy.

      The workaround is to disable direct memory usage in Clover:
      Create new file in tomcat_dir/conf/engine.config with following content: USE_DIRECT_MEMORY = false
      Then add following line at the end oftomcat_dir/conf/clover.config: engine.config.file= tomcat_dir/conf/engine.config

      This will force clover to use heap for edges so you may want to increase heap size accordingly.


          Issue Links



              • Assignee:
                krivanekm Milan Krivanek
                zatopekm Martin Zatopek
              • Votes:
                0 Vote for this issue
                5 Start watching this issue


                • Created: