[ 
https://issues.apache.org/jira/browse/NIFI-3142?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15722614#comment-15722614
 ] 

ASF GitHub Bot commented on NIFI-3142:
--------------------------------------

Github user mattyb149 commented on a diff in the pull request:

    https://github.com/apache/nifi/pull/1290#discussion_r90893970
  
    --- Diff: 
nifi-nar-bundles/nifi-hl7-bundle/nifi-hl7-processors/src/main/java/org/apache/nifi/processors/hl7/ExtractHL7Attributes.java
 ---
    @@ -196,8 +196,8 @@ public void process(final InputStream in) throws 
IOException {
                 final Map<String, String> attributes = getAttributes(message, 
useSegmentNames, parseSegmentFields);
                 flowFile = session.putAllAttributes(flowFile, attributes);
                 getLogger().debug("Added the following attributes for {}: {}", 
new Object[]{flowFile, attributes});
    -        } catch (final HL7Exception e) {
    -            getLogger().error("Failed to extract attributes from {} due to 
{}", new Object[]{flowFile, e});
    +        } catch (final Throwable t) {
    --- End diff --
    
    Do you have an example / reproduction path of an exception that isn't an 
HL7Exception? I'm a bit wary of changing this to Throwable as the error might 
have come from the NiFi framework, and routing any possible error to a block 
that transfers a flow file might not be the best idea. If the callback passed 
to session.read() throws an IOException, then read() will throw a 
ProcessException with the IOException as the cause. You could check for that 
possibility, or (since you are just filling a buffer in the callback) you could 
retrieve the InputStream using 
[session.read(flowFile)](https://github.com/apache/nifi/blob/master/nifi-api/src/main/java/org/apache/nifi/processor/ProcessSession.java#L570)
 then call StreamUtils.fillBuffer() on that (although take care to perhaps wrap 
the InputStream in a BufferedInputStream, and you'll have to close it yourself, 
see the javadoc for more details).


> ExtractHL7Attributes processor does not route to REL_FAILURE for an exception 
> other than an HL7Exception
> --------------------------------------------------------------------------------------------------------
>
>                 Key: NIFI-3142
>                 URL: https://issues.apache.org/jira/browse/NIFI-3142
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Extensions
>    Affects Versions: 1.0.0
>            Reporter: Kirby Linvill
>            Priority: Minor
>              Labels: easyfix
>
> The ExtractHL7Attribute processor will not route a flowfile to REL_FAILURE if 
> processing the flow file throws an exception that is not an HL7Exception. 
> This bug is a result of the try catch block in the onTrigger method. It is 
> easily fixed by changing the catch block to catch a throwable object. Change
> {noformat} 
> try {
>     ...
> } catch (final HL7Exception e) {
>     getLogger().error("Failed to extract attributes from {} due to {}", new 
> Object[]{flowFile, e}, e);
>     session.transfer(flowFile, REL_FAILURE);
>     return;
> }
> {noformat} 
> to 
> {noformat} 
> try {
>     ...
> } catch (final Throwable t) {
>     getLogger().error("Failed to extract attributes from {} due to {}", new 
> Object[]{flowFile, t}, t);
>     session.transfer(flowFile, REL_FAILURE);
>     return;
> }
> {noformat} 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to