Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-1652

Memory leak in File component when using batch processing

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.0-M1
    • Fix Version/s: 2.0-M2
    • Component/s: camel-core
    • Labels:
      None
    • Patch Info:
      Patch Available

      Description

      See http://www.nabble.com/convertBodyTo-heap-problem-to23743181.html

      When using a file endpoint with sorting as start of a route then the files are processed in a batch. In the current implementation this means a List of exchanges is created and given to the batch processing. The list is then traversed and each exchange is processed. This means the list references all exchanges during the whole batch processing. So none of the exchanges can be collected by the garbage collector till the whole batch is fully processed.

      The problem really becomes bad when the exchanges are large. For example if you use convertBodyTo(String.class) and the files are large. If you have 100 files with 10 MB each then camel will consume 1 GB of heap. What is even worse is that it seems the processing simply stops when the heap is full.

      I have written a small test that shows the problem and a patch that corrects this problem. I hope this gets into 2.0-M2 as this is a quite serious bug.

        Attachments

        1. camel-core.patch
          5 kB
          Christian Schneider

          Activity

            People

            • Assignee:
              davsclaus Claus Ibsen
              Reporter:
              cschneider Christian Schneider
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: