[
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)