You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Michael Rambichler (Jira)" <ji...@apache.org> on 2022/07/03 18:26:00 UTC

[jira] [Commented] (CAMEL-18255) Memory Leak with MDCUnitOfWork

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

Michael Rambichler commented on CAMEL-18255:
--------------------------------------------

Hi [~davsclaus] 

The issue is quite independent of MDC.

See my example in [https://github.com/michael-salzburg/splitMemoryTest.git]

 

I spend some time to analyse it further:

 

If you override the method of the DefaultUnitOfWork or MDCUnitOfWork and return {color:#de350b}true{color}: Then the Memory Leak occurs. (Event the 

@Override
public boolean isBeforeAfterProcess() {
{color:#de350b}return true; //like its set e.g. in MDCUnitOfWork{color}
}

 

The current MDCUnitOfWork returns true in this case.

But i wasn't able to analyse the impact in deep of this change, yet.

 

Btw. You mentioned MDC is low prio/candidate for dprecation: We use MDC logging of especially the breadcrumbId heavily in our system. That would have major impact in our environment.

> Memory Leak with MDCUnitOfWork
> ------------------------------
>
>                 Key: CAMEL-18255
>                 URL: https://issues.apache.org/jira/browse/CAMEL-18255
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 3.14.1, 3.17.0
>            Reporter: Michael Rambichler
>            Priority: Minor
>             Fix For: 3.x
>
>         Attachments: Screenshot 2022-07-01 at 19.30.44.png, screenshot-1.png
>
>
> We realized a sever memory leak in a standard route:
>  
> I reproduced it and made a simple MemoryAllocation Check.
> Just for curiosity i made another test with:  ({color:#00875a}.errorhandler(no errorhandler){color}) and the memory leak does not occure.
>  
> Sample route to reproduce:
>  
> from("scheduler:testScheduler?repeatCount=1")
>                 .log("Starting route test-route")
>                 .process(exchange -> {
>                     Iterator<String> infiniteIter = new Iterator<>() {
>                         private int integer = 0;
>  
>                         @Override public boolean hasNext()
> {                             return true;                         }
>                         @Override public String next()
> {                             return String.valueOf(integer++);                         }
>                     };
>                     exchange.getMessage().setBody(infiniteIter);
>                 })
>                 .split().body().streaming()
>                     .log("inside split: ${body}")
>                 .end()
>                 .log("test-route never finishes");



--
This message was sent by Atlassian Jira
(v8.20.10#820010)