camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Claus Ibsen (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CAMEL-9195) Memory leak in UndertowProducer
Date Wed, 07 Oct 2015 05:45:27 GMT

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

Claus Ibsen commented on CAMEL-9195:
------------------------------------

Thanks for reporting. Sound like some buffer is not released or something.

> Memory leak in UndertowProducer
> -------------------------------
>
>                 Key: CAMEL-9195
>                 URL: https://issues.apache.org/jira/browse/CAMEL-9195
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-undertow
>    Affects Versions: 2.16.0
>            Reporter: James Netherton
>
> The UndertowProducer class leaks memory over time due to the repeated creation of ByteBufferSlicePool
for each HTTP client request. My understanding of this class is that instances of it should
be limited and cached if possible.
> Here's an example RouteBuilder to replicate the issue. In a short time it will result
in an OutOfMemoryError.  
> {code}
> public class UndertowRouteBuilder extends RouteBuilder {
>     @Override
>     public void configure() throws Exception {
>         from("undertow:http://localhost:8080/test").to("log:undertow?showAll=true");
>     	from("timer:foo?period=5000").transform(constant("hello world")).to("undertow:http://localhost:8080/test");
>     }
> }
> {code}
> {code}
> org.apache.camel.CamelExecutionException: Exception occurred during execution on the
exchange: Exchange[ID-worklaptop-50317-1444141557043-2-30][Message: hello world]
> 	at org.apache.camel.util.ObjectHelper.wrapCamelExecutionException(ObjectHelper.java:1658)
> 	at org.apache.camel.impl.DefaultExchange.setException(DefaultExchange.java:345)
> 	at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:156)
> 	at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
> 	at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)
> 	at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
> 	at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)
> 	at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)
> 	at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
> 	at org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:165)
> 	at org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:73)
> 	at java.util.TimerThread.mainLoop(Timer.java:555)
> 	at java.util.TimerThread.run(Timer.java:505)
> Caused by: java.lang.OutOfMemoryError: Direct buffer memory
> 	at java.nio.Bits.reserveMemory(Bits.java:658)
> 	at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:123)
> 	at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:311)
> 	at org.xnio.BufferAllocator$2.allocate(BufferAllocator.java:57)
> 	at org.xnio.BufferAllocator$2.allocate(BufferAllocator.java:55)
> 	at org.xnio.ByteBufferSlicePool.allocate(ByteBufferSlicePool.java:143)
> 	at io.undertow.client.http.HttpRequestConduit.processWrite(HttpRequestConduit.java:98)
> 	at io.undertow.client.http.HttpRequestConduit.write(HttpRequestConduit.java:460)
> 	at io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.write(AbstractFixedLengthStreamSinkConduit.java:106)
> 	at org.xnio.conduits.ConduitStreamSinkChannel.write(ConduitStreamSinkChannel.java:150)
> 	at io.undertow.channels.DetachableStreamSinkChannel.write(DetachableStreamSinkChannel.java:240)
> 	at org.apache.camel.component.undertow.UndertowProducer$UndertowProducerCallback.completed(UndertowProducer.java:166)
> 	at org.apache.camel.component.undertow.UndertowProducer$UndertowProducerCallback.completed(UndertowProducer.java:121)
> 	at io.undertow.client.http.HttpClientExchange.invokeReadReadyCallback(HttpClientExchange.java:190)
> 	at io.undertow.client.http.HttpClientConnection.initiateRequest(HttpClientConnection.java:293)
> 	at io.undertow.client.http.HttpClientConnection.sendRequest(HttpClientConnection.java:228)
> 	at org.apache.camel.component.undertow.UndertowProducer.process(UndertowProducer.java:102)
> 	at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:141)
> 	... 10 more
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message