You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2015/05/29 16:59:41 UTC

camel git commit: CAMEL-8812 Fixed the Memory leak in HL7MLLPNettyDecoder with thanks to Gijsbert

Repository: camel
Updated Branches:
  refs/heads/master 5719d4905 -> 919de008e


CAMEL-8812 Fixed the Memory leak in HL7MLLPNettyDecoder with thanks to Gijsbert


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

Branch: refs/heads/master
Commit: 919de008e5a976aaa4d5d4a7b5a854b5ff113a82
Parents: 5719d49
Author: Willem Jiang <wi...@gmail.com>
Authored: Fri May 29 22:23:00 2015 +0800
Committer: Willem Jiang <wi...@gmail.com>
Committed: Fri May 29 22:24:41 2015 +0800

----------------------------------------------------------------------
 .../camel/component/hl7/HL7MLLPNettyDecoder.java  | 18 +++++++++++-------
 .../camel/component/hl7/HL7MLLPCodecTest.java     |  2 +-
 2 files changed, 12 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/919de008/components/camel-hl7/src/main/java/org/apache/camel/component/hl7/HL7MLLPNettyDecoder.java
----------------------------------------------------------------------
diff --git a/components/camel-hl7/src/main/java/org/apache/camel/component/hl7/HL7MLLPNettyDecoder.java b/components/camel-hl7/src/main/java/org/apache/camel/component/hl7/HL7MLLPNettyDecoder.java
index 4938cd5..9c04448 100644
--- a/components/camel-hl7/src/main/java/org/apache/camel/component/hl7/HL7MLLPNettyDecoder.java
+++ b/components/camel-hl7/src/main/java/org/apache/camel/component/hl7/HL7MLLPNettyDecoder.java
@@ -59,13 +59,17 @@ class HL7MLLPNettyDecoder extends DelimiterBasedFrameDecoder {
     protected Object decode(ChannelHandlerContext ctx, ByteBuf buffer) throws Exception {
         ByteBuf buf = (ByteBuf) super.decode(ctx, buffer);
         if (buf != null) {
-            int pos = buf.bytesBefore((byte) config.getStartByte());
-            if (pos >= 0) {
-                ByteBuf msg = buf.readerIndex(pos + 1).slice();
-                LOG.debug("Message ends with length {}", msg.readableBytes());
-                return config.isProduceString() ? asString(msg) : asByteArray(msg);
-            } else {
-                throw new DecoderException("Did not find start byte " + (int) config.getStartByte());
+            try {
+                int pos = buf.bytesBefore((byte) config.getStartByte());
+                if (pos >= 0) {
+                    ByteBuf msg = buf.readerIndex(pos + 1).slice();
+                    LOG.debug("Message ends with length {}", msg.readableBytes());
+                    return config.isProduceString() ? asString(msg) : asByteArray(msg);
+                } else {
+                    throw new DecoderException("Did not find start byte " + (int) config.getStartByte());
+                }
+            } finally {
+                buf.release();
             }
         }
         // Message not complete yet - return null to be called again

http://git-wip-us.apache.org/repos/asf/camel/blob/919de008/components/camel-hl7/src/test/java/org/apache/camel/component/hl7/HL7MLLPCodecTest.java
----------------------------------------------------------------------
diff --git a/components/camel-hl7/src/test/java/org/apache/camel/component/hl7/HL7MLLPCodecTest.java b/components/camel-hl7/src/test/java/org/apache/camel/component/hl7/HL7MLLPCodecTest.java
index 1d9afef..96d6396 100644
--- a/components/camel-hl7/src/test/java/org/apache/camel/component/hl7/HL7MLLPCodecTest.java
+++ b/components/camel-hl7/src/test/java/org/apache/camel/component/hl7/HL7MLLPCodecTest.java
@@ -21,7 +21,6 @@ import ca.uhn.hl7v2.model.v24.message.ADR_A19;
 import ca.uhn.hl7v2.model.v24.segment.MSA;
 import ca.uhn.hl7v2.model.v24.segment.MSH;
 import ca.uhn.hl7v2.model.v24.segment.QRD;
-
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
@@ -32,6 +31,7 @@ import org.junit.Test;
  * Unit test for the HL7MLLP Codec.
  */
 public class HL7MLLPCodecTest extends HL7TestSupport {
+    
 
     protected JndiRegistry createRegistry() throws Exception {
         JndiRegistry jndi = super.createRegistry();