Repository: camel
Updated Branches:
  refs/heads/master b4a6ad4cf -> 8efbf0303


CAMEL-9040: Fixed netty leak in http4 producer


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/8efbf030
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/8efbf030
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/8efbf030

Branch: refs/heads/master
Commit: 8efbf0303949c0f0e4e02f9309f6c35c24ccfa9e
Parents: 9fc3e43
Author: Claus Ibsen <davscl...@apache.org>
Authored: Wed May 4 14:06:26 2016 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Wed May 4 14:07:56 2016 +0200

----------------------------------------------------------------------
 components/camel-netty4-http/run-test-leak.sh   | 31 ++++++++++++++++++++
 .../netty4/http/DefaultNettyHttpBinding.java    |  9 ++----
 2 files changed, 33 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/8efbf030/components/camel-netty4-http/run-test-leak.sh
----------------------------------------------------------------------
diff --git a/components/camel-netty4-http/run-test-leak.sh 
b/components/camel-netty4-http/run-test-leak.sh
new file mode 100755
index 0000000..409a814
--- /dev/null
+++ b/components/camel-netty4-http/run-test-leak.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements.  See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License.  You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+
+echo 'Running tests with Netty leak detection ...'
+mvn clean install -Dio.netty.leakDetectionLevel=paranoid 
-Dio.netty.leakDetection.maxRecords=20
+
+echo 'Checking log file if there is any leaks ...'
+
+if grep LEAK target/camel-netty4-http-test.log; then
+    echo 'LEAK found'
+    exit 1
+else
+    echo 'No LEAK found'
+    exit 0
+fi

http://git-wip-us.apache.org/repos/asf/camel/blob/8efbf030/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/DefaultNettyHttpBinding.java
----------------------------------------------------------------------
diff --git 
a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/DefaultNettyHttpBinding.java
 
b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/DefaultNettyHttpBinding.java
index 9f94ea0..6364f9a 100644
--- 
a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/DefaultNettyHttpBinding.java
+++ 
b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/DefaultNettyHttpBinding.java
@@ -16,9 +16,7 @@
  */
 package org.apache.camel.component.netty4.http;
 
-import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
 import java.io.ObjectOutputStream;
 import java.io.PrintWriter;
 import java.io.StringWriter;
@@ -46,11 +44,9 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.StreamCache;
 import org.apache.camel.TypeConverter;
 import org.apache.camel.component.netty4.NettyConstants;
 import org.apache.camel.component.netty4.NettyConverter;
-import org.apache.camel.converter.stream.ByteArrayInputStreamCache;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.camel.util.ExchangeHelper;
 import org.apache.camel.util.IOHelper;
@@ -276,12 +272,11 @@ public class DefaultNettyHttpBinding implements 
NettyHttpBinding, Cloneable {
             // keep the body as is, and use type converters
             answer.setBody(response.content());
         } else {
-            // stores as byte array as the netty ByteBuf will be freed when 
the producer is done,
-            // and then we can no longer access the message body
+            // stores as byte array as the netty ByteBuf will be freed when 
the producer is done, and then we can no longer access the message body
             response.retain();
             try {
                 byte[] bytes = 
exchange.getContext().getTypeConverter().convertTo(byte[].class, exchange, 
response.content());
-                answer.setBody(new ByteArrayInputStreamCache(new 
ByteArrayInputStream(bytes)));
+                answer.setBody(bytes);
             } finally {
                 response.release();
             }

Reply via email to