[ https://issues.apache.org/jira/browse/NIFI-3927?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16118981#comment-16118981 ]
Douglas Moore commented on NIFI-3927: ------------------------------------- Hopefully this is useful note....sorry if I'm hijacking the wrong JIRA as not sure if this JIRA is now about CRLF or Z segments... My findings are: by removing the '\r' characters from the test message in the JUnit test, I get the same null pointer exception as I've been getting by pulling in messages via the GetFile processor. As I read above the spec requires the \r. I found GetFile->PutFile nifi flow does not remove the \r from the output file. The null pointer exception is due to the code accessing segmentNames[19], one element beyond the filled in segmentNames. Thus segment.numFields() is > the number of segmentNames. Can we at least address protect from this overrun via a bounds check on segment.numFields? I'm on the nifi-1.3 source branch and using the nifi-hl7-nar-1.3.0.nar on a linux VM. {code:java} ExtractHL7Attributes.getAllFields(String, Segment, boolean) line: 287 ExtractHL7Attributes.getAttributes(Group, boolean, boolean) line: 217 ExtractHL7Attributes.onTrigger(ProcessContext, ProcessSession) line: 199 ExtractHL7Attributes(AbstractProcessor).onTrigger(ProcessContext, ProcessSessionFactory) line: 27 StandardProcessorTestRunner$RunProcessor.call() line: 251 StandardProcessorTestRunner$RunProcessor.call() line: 245 ScheduledThreadPoolExecutor$ScheduledFutureTask<V>(FutureTask<V>).run() line: 266 ScheduledThreadPoolExecutor$ScheduledFutureTask<V>.access$201(ScheduledThreadPoolExecutor$ScheduledFutureTask) line: 180 ScheduledThreadPoolExecutor$ScheduledFutureTask<V>.run() line: 293 ScheduledThreadPoolExecutor(ThreadPoolExecutor).runWorker(ThreadPoolExecutor$Worker) line: 1142 ThreadPoolExecutor$Worker.run() line: 617 Thread.run() line: 745 {code} https://github.com/apache/nifi/blob/rel/nifi-1.3.0/nifi-nar-bundles/nifi-hl7-bundle/nifi-hl7-processors/src/main/java/org/apache/nifi/processors/hl7/ExtractHL7Attributes.java > Extract HL7 Attributes throwing NULLpointerException > ---------------------------------------------------- > > Key: NIFI-3927 > URL: https://issues.apache.org/jira/browse/NIFI-3927 > Project: Apache NiFi > Issue Type: Bug > Components: Extensions > Affects Versions: 1.0.0 > Environment: NiFi with HortonWorks > Reporter: Raj karan > Assignee: Joey Frazee > Attachments: null pointer.png, pipe_ended_charcter_encoded_ascii.png, > resultWithDefault.txt, source.txt, when not ended with pipe.png > > > I have an HL7 file which I want to put in HBase, So I am parsing this file > through ExtractHL7Attributes processor. With the default value for every > property processor works with no error but resultant attributes file only > have one segment. When I sets `Use Segment Names` property true it throws > NULLPointerException. > Stack trace: > 2017-05-17 11:11:58,390 INFO [Heartbeat Monitor Thread-1] > o.a.n.c.c.h.AbstractHeartbeatMonitor Finished processing 1 heartbeats in 4756 > nanos > 2017-05-17 11:11:58,847 ERROR [Timer-Driven Process Thread-2] > o.a.n.p.hl7.ExtractHL7Attributes > ExtractHL7Attributes[id=bea89fef-86db-1094-ffff-ffff81c2e524] Failed to > extract attributes from > StandardFlowFileRecord[uuid=73a649fe-261c-40d2-bad7-b0bc595c0158,claim=StandardContentClaim > [resourceClaim=StandardResourceClaim[id=1495030753601-25550, > container=default, section=974], offset=912561, > length=288],offset=0,name=source.txt,size=288] due to > ca.uhn.hl7v2.HL7Exception: The HL7 version 2.3 > EVN is not recognized: ca.uhn.hl7v2.HL7Exception: The HL7 version 2.3 > EVN is not recognized > 2017-05-17 11:11:58,848 ERROR [Timer-Driven Process Thread-2] > o.a.n.p.hl7.ExtractHL7Attributes > ca.uhn.hl7v2.HL7Exception: The HL7 version 2.3 > EVN is not recognized > at ca.uhn.hl7v2.parser.Parser.assertVersionExists(Parser.java:527) > ~[hapi-base-2.2.jar:na] > at ca.uhn.hl7v2.parser.Parser.parse(Parser.java:208) > ~[hapi-base-2.2.jar:na] > at ca.uhn.hl7v2.parser.PipeParser.parse(PipeParser.java:1018) > ~[hapi-base-2.2.jar:na] > at > org.apache.nifi.processors.hl7.ExtractHL7Attributes.onTrigger(ExtractHL7Attributes.java:195) > ~[nifi-hl7-processors-1.0.0.2.0.2.0-17.jar:1.0.0.2.0.2.0-17] > at > org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27) > [nifi-api-1.0.0.2.0.2.0-17.jar:1.0.0.2.0.2.0-17] > at > org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1064) > [nifi-framework-core-1.0.0.2.0.2.0-17.jar:1.0.0.2.0.2.0-17] > at > org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:136) > [nifi-framework-core-1.0.0.2.0.2.0-17.jar:1.0.0.2.0.2.0-17] > at > org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:47) > [nifi-framework-core-1.0.0.2.0.2.0-17.jar:1.0.0.2.0.2.0-17] > at > org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:132) > [nifi-framework-core-1.0.0.2.0.2.0-17.jar:1.0.0.2.0.2.0-17] > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) > [na:1.8.0_77] > at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) > [na:1.8.0_77] > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) > [na:1.8.0_77] > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) > [na:1.8.0_77] > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > [na:1.8.0_77] > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > [na:1.8.0_77] > at java.lang.Thread.run(Thread.java:745) [na:1.8.0_77] > 2017-05-17 11:11:58,852 ERROR [Timer-Driven Process Thread-1] > o.a.n.p.hl7.ExtractHL7Attributes > ExtractHL7Attributes[id=bea89fef-86db-1094-ffff-ffff81c2e524] > ExtractHL7Attributes[id=bea89fef-86db-1094-ffff-ffff81c2e524] failed to > process due to java.lang.NullPointerException; rolling back session: > java.lang.NullPointerException > 2017-05-17 11:11:58,852 ERROR [Timer-Driven Process Thread-1] > o.a.n.p.hl7.ExtractHL7Attributes > java.lang.NullPointerException: null > 2017-05-17 11:11:58,852 ERROR [Timer-Driven Process Thread-1] > o.a.n.p.hl7.ExtractHL7Attributes > ExtractHL7Attributes[id=bea89fef-86db-1094-ffff-ffff81c2e524] > ExtractHL7Attributes[id=bea89fef-86db-1094-ffff-ffff81c2e524] failed to > process session due to java.lang.NullPointerException: > java.lang.NullPointerException > 2017-05-17 11:11:58,852 ERROR [Timer-Driven Process Thread-1] > o.a.n.p.hl7.ExtractHL7Attributes > java.lang.NullPointerException: null > 2017-05-17 11:11:58,852 WARN [Timer-Driven Process Thread-1] > o.a.n.p.hl7.ExtractHL7Attributes > ExtractHL7Attributes[id=bea89fef-86db-1094-ffff-ffff81c2e524] Processor > Administratively Yielded for 1 sec due to processing failure > 2017-05-17 11:11:58,852 WARN [Timer-Driven Process Thread-1] > o.a.n.c.t.ContinuallyRunProcessorTask Administratively Yielding > ExtractHL7Attributes[id=bea89fef-86db-1094-ffff-ffff81c2e524] due to uncaught > Exception: java.lang.NullPointerException > 2017-05-17 11:11:58,852 WARN [Timer-Driven Process Thread-1] > o.a.n.c.t.ContinuallyRunProcessorTask > java.lang.NullPointerException: null -- This message was sent by Atlassian JIRA (v6.4.14#64029)