[ https://issues.apache.org/jira/browse/CAMEL-10360?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16350003#comment-16350003 ]
Claus Ibsen commented on CAMEL-10360: ------------------------------------- I suggest to use the newer camel-mllp component which is more hardened > IllegalStateException when mina buffer contains duplicate MLLP end bytes > ------------------------------------------------------------------------ > > Key: CAMEL-10360 > URL: https://issues.apache.org/jira/browse/CAMEL-10360 > Project: Camel > Issue Type: Bug > Components: camel-hl7 > Affects Versions: 2.17.3, 2.18.1 > Reporter: Gijsbert van den Brink > Priority: Minor > Attachments: CAMEL10360Test.java > > > We're occasionally seeing the following Mina exception on our production > environment: "IllegalStateException: doDecode() can't return true when buffer > is not consumed." (full stack trace below) > I haven't been able to reproduce the issue, and I don't fully understand the > problem, but I think it's caused by duplicate messages (or specifically > duplicate end byte markers) in the Mina IoBuffer that is read by Camel's > HL7MLLPDecoder. > Full stack trace (with truncated hex dump): > org.apache.camel.CamelExchangeException: Error occurred in ResponseHandler. > Exchange[ID-prdvpn01-zd-messaging-37296-1475153396916-0-335909]. Caused by: > [org.apache.mina.filter.codec.ProtocolDecoderException - > java.lang.IllegalStateException: doDecode() can't return true when buffer is > not consumed. (Hexdump: 0B 4D 53 48 ... 0D 1C 0D 0B 4D 53 48 ... 0D 1C 0D)] > at > org.apache.camel.component.mina2.Mina2Producer.doProcess(Mina2Producer.java:178) > at > org.apache.camel.component.mina2.Mina2Producer.process(Mina2Producer.java:116) > at > org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61) > at > org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468) > at > org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197) > at > org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:681) > at > org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:609) > at > org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:238) > at > org.apache.camel.processor.RecipientList.sendToRecipientList(RecipientList.java:170) > at > org.apache.camel.processor.RecipientList.process(RecipientList.java:131) > 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.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468) > at > org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197) > 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:197) > at > org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62) > at > org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145) > at > org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468) > at > org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197) > at > org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109) > at > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:91) > at > org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:112) > at > org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:721) > at > org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:681) > at > org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:651) > at > org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:315) > at > org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:233) > at > org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1158) > at > org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1150) > at > org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1047) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at java.lang.Thread.run(Thread.java:745) > Caused by: org.apache.mina.filter.codec.ProtocolDecoderException: > java.lang.IllegalStateException: doDecode() can't return true when buffer is > not consumed. (Hexdump: 0B 4D 53 48 ... 0D 1C 0D 0B 4D 53 48 ... 0D 1C 0D) > at > org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:240) > at > org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:542) > at > org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1300(DefaultIoFilterChain.java:48) > at > org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:947) > at > org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:74) > at org.apache.mina.core.session.IoEvent.run(IoEvent.java:63) > at > org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTask(OrderedThreadPoolExecutor.java:770) > at > org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTasks(OrderedThreadPoolExecutor.java:762) > at > org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.run(OrderedThreadPoolExecutor.java:704) > ... 1 common frames omitted > Caused by: java.lang.IllegalStateException: doDecode() can't return true when > buffer is not consumed. > at > org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(CumulativeProtocolDecoder.java:184) > at > org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:231) > ... 9 common frames omitted -- This message was sent by Atlassian JIRA (v7.6.3#76005)