I had an incoming HL7 message to my LLP Listener (which ACKs) that started with this MSH:
It's obviously a nasty MSH, and it causes this exception (as expected), which stops Mirth:
I understand the error but I'd like to know why this would cause Mirth to stop processing messages. Is there anything I can do to have Mirth handle this (and other errors I may encounter down the road that I haven't yet seen) a little more gracefully - like just log the error and move on?
MSH|^~\\!|ENT
java.lang.ArrayIndexOutOfBoundsException: 9
at ca.uhn.hl7v2.parser.PipeParser.getCriticalResponse Data(PipeParser.java:636)
at com.webreach.mirth.util.ACKGenerator.generateAckRe sponse(ACKGenerator.java:37)
at com.webreach.mirth.server.mule.providers.mllp.Mllp MessageReceiver$TcpWorker.generateACK(MllpMessageR eceiver.java:501)
at com.webreach.mirth.server.mule.providers.mllp.Mllp MessageReceiver$TcpWorker.processData(MllpMessageR eceiver.java:410)
at com.webreach.mirth.server.mule.providers.mllp.Mllp MessageReceiver$TcpWorker.preprocessData(MllpMessa geReceiver.java:321)
at com.webreach.mirth.server.mule.providers.mllp.Mllp MessageReceiver$TcpWorker.run(MllpMessageReceiver. java:282)
at org.mule.impl.work.WorkerContext.run(WorkerContext .java:290)
at edu.emory.mathcs.backport.java.util.concurrent.Thr eadPoolExecutor$Worker.runTask(ThreadPoolExecutor. java:650)
at edu.emory.mathcs.backport.java.util.concurrent.Thr eadPoolExecutor$Worker.run(ThreadPoolExecutor.java :675)
at java.lang.Thread.run(Thread.java:619)
ERROR 2007-06-15 10:54:55,659 [4950554f-dbaf-48b7-9a4e-0c8d598921d9_source_connector._mllpEndpoint#-189695414.receiver.2] org.mule.impl.DefaultComponentExceptionStrategy: Caught exception in Exception Strategy for: 4950554f-dbaf-48b7-9a4e-0c8d598921d9: ca.uhn.hl7v2.HL7Exception: Can't parse critical fields from MSH segment (java.lang.ArrayIndexOutOfBoundsException: 9): MSH|^~\\!|ENT
ca.uhn.hl7v2.HL7Exception: Can't parse critical fields from MSH segment (java.lang.ArrayIndexOutOfBoundsException: 9): MSH|^~\\!|ENT
at ca.uhn.hl7v2.parser.PipeParser.getCriticalResponse Data(PipeParser.java:668)
at com.webreach.mirth.util.ACKGenerator.generateAckRe sponse(ACKGenerator.java:37)
at com.webreach.mirth.server.mule.providers.mllp.Mllp MessageReceiver$TcpWorker.generateACK(MllpMessageR eceiver.java:501)
at com.webreach.mirth.server.mule.providers.mllp.Mllp MessageReceiver$TcpWorker.processData(MllpMessageR eceiver.java:410)
at com.webreach.mirth.server.mule.providers.mllp.Mllp MessageReceiver$TcpWorker.preprocessData(MllpMessa geReceiver.java:321)
at com.webreach.mirth.server.mule.providers.mllp.Mllp MessageReceiver$TcpWorker.run(MllpMessageReceiver. java:282)
at org.mule.impl.work.WorkerContext.run(WorkerContext .java:290)
at edu.emory.mathcs.backport.java.util.concurrent.Thr eadPoolExecutor$Worker.runTask(ThreadPoolExecutor. java:650)
at edu.emory.mathcs.backport.java.util.concurrent.Thr eadPoolExecutor$Worker.run(ThreadPoolExecutor.java :675)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 9
at ca.uhn.hl7v2.parser.PipeParser.getCriticalResponse Data(PipeParser.java:636)
... 9 more
at ca.uhn.hl7v2.parser.PipeParser.getCriticalResponse Data(PipeParser.java:636)
at com.webreach.mirth.util.ACKGenerator.generateAckRe sponse(ACKGenerator.java:37)
at com.webreach.mirth.server.mule.providers.mllp.Mllp MessageReceiver$TcpWorker.generateACK(MllpMessageR eceiver.java:501)
at com.webreach.mirth.server.mule.providers.mllp.Mllp MessageReceiver$TcpWorker.processData(MllpMessageR eceiver.java:410)
at com.webreach.mirth.server.mule.providers.mllp.Mllp MessageReceiver$TcpWorker.preprocessData(MllpMessa geReceiver.java:321)
at com.webreach.mirth.server.mule.providers.mllp.Mllp MessageReceiver$TcpWorker.run(MllpMessageReceiver. java:282)
at org.mule.impl.work.WorkerContext.run(WorkerContext .java:290)
at edu.emory.mathcs.backport.java.util.concurrent.Thr eadPoolExecutor$Worker.runTask(ThreadPoolExecutor. java:650)
at edu.emory.mathcs.backport.java.util.concurrent.Thr eadPoolExecutor$Worker.run(ThreadPoolExecutor.java :675)
at java.lang.Thread.run(Thread.java:619)
ERROR 2007-06-15 10:54:55,659 [4950554f-dbaf-48b7-9a4e-0c8d598921d9_source_connector._mllpEndpoint#-189695414.receiver.2] org.mule.impl.DefaultComponentExceptionStrategy: Caught exception in Exception Strategy for: 4950554f-dbaf-48b7-9a4e-0c8d598921d9: ca.uhn.hl7v2.HL7Exception: Can't parse critical fields from MSH segment (java.lang.ArrayIndexOutOfBoundsException: 9): MSH|^~\\!|ENT
ca.uhn.hl7v2.HL7Exception: Can't parse critical fields from MSH segment (java.lang.ArrayIndexOutOfBoundsException: 9): MSH|^~\\!|ENT
at ca.uhn.hl7v2.parser.PipeParser.getCriticalResponse Data(PipeParser.java:668)
at com.webreach.mirth.util.ACKGenerator.generateAckRe sponse(ACKGenerator.java:37)
at com.webreach.mirth.server.mule.providers.mllp.Mllp MessageReceiver$TcpWorker.generateACK(MllpMessageR eceiver.java:501)
at com.webreach.mirth.server.mule.providers.mllp.Mllp MessageReceiver$TcpWorker.processData(MllpMessageR eceiver.java:410)
at com.webreach.mirth.server.mule.providers.mllp.Mllp MessageReceiver$TcpWorker.preprocessData(MllpMessa geReceiver.java:321)
at com.webreach.mirth.server.mule.providers.mllp.Mllp MessageReceiver$TcpWorker.run(MllpMessageReceiver. java:282)
at org.mule.impl.work.WorkerContext.run(WorkerContext .java:290)
at edu.emory.mathcs.backport.java.util.concurrent.Thr eadPoolExecutor$Worker.runTask(ThreadPoolExecutor. java:650)
at edu.emory.mathcs.backport.java.util.concurrent.Thr eadPoolExecutor$Worker.run(ThreadPoolExecutor.java :675)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 9
at ca.uhn.hl7v2.parser.PipeParser.getCriticalResponse Data(PipeParser.java:636)
... 9 more
Comment