[
https://issues.apache.org/jira/browse/NIFI-3255?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15820213#comment-15820213
]
ASF GitHub Bot commented on NIFI-3255:
--------------------------------------
Github user ijokarumawak commented on a diff in the pull request:
https://github.com/apache/nifi/pull/1394#discussion_r95726870
--- Diff:
nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/SplitText.java
---
@@ -326,6 +329,27 @@ public void process(InputStream in) throws IOException
{
return splitFlowFiles;
}
+ /**
+ * Will merge the two files. This operation has different semantics
then
+ * sessioin.merge. Also, it always expects 2 and no more then 2 flow
files,
+ * so vararg signature primarily for simplification.
+ */
+ private FlowFile merge(ProcessSession session, FlowFile... flowFiles) {
--- End diff --
Since this method does simply adding header to each split, naming this as
`prependHeader` would make its purpose clearer. The keyword `merge` is
counter-intuitive in the context of this SplitText processor. How do you think
a method signature like this?
```java
/**
* @param split a FlowFile for the split, this will be removed from session
* @return newly created flow file contains header and split merged
**/
private FlowFile prependHeader(ProcessSession session, FlowFile header,
FlowFile split)
```
With this, we don't have to mention that this is different from
session.merge, nor explain about the var args.
> SplitText fails with IllegalArgumentException: Destination cannot be within
> sources
> -----------------------------------------------------------------------------------
>
> Key: NIFI-3255
> URL: https://issues.apache.org/jira/browse/NIFI-3255
> Project: Apache NiFi
> Issue Type: Bug
> Components: Extensions
> Affects Versions: 1.1.0, 1.1.1
> Reporter: Koji Kawamura
> Assignee: Oleg Zhurakousky
> Priority: Critical
>
> If SplitText is configured with Header Line Count grater than 0, and input
> flow file like below is passed, it fails with IllegalArgumentException:
> {code}
> header
> line1
> line2
> {code}
> Stacktrace:
> {code}
> 2016-12-27 16:41:51,016 WARN [Timer-Driven Process Thread-2]
> o.a.n.c.t.ContinuallyRunProcessorTask java.lang.IllegalArgumentException:
> Destination cannot be within sources
> at
> org.apache.nifi.controller.repository.StandardProcessSession.merge(StandardProcessSession.java:2217)
> ~[nifi-framework-core-1.2.0-SNAPSHOT.jar:1.2.0-SNAPSHOT]
> at
> org.apache.nifi.controller.repository.StandardProcessSession.merge(StandardProcessSession.java:2209)
> ~[nifi-framework-core-1.2.0-SNAPSHOT.jar:1.2.0-SNAPSHOT]
> at
> org.apache.nifi.processors.standard.SplitText.generateSplitFlowFiles(SplitText.java:305)
> ~[na:na]
> at
> org.apache.nifi.processors.standard.SplitText.onTrigger(SplitText.java:253)
> ~[na:na]
> at
> org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
> ~[nifi-api-1.2.0-SNAPSHOT.jar:1
> {code}
> Marked as critical since this is a regression and breaks existing flow. With
> 1.0, SplitText produces following output flow files to "split" relationship
> with the same input flow file and processor configuration:
> {code}
> # output flow file 1
> header
> line1
> # output flow file 2
> header
> line 2
> {code}
> The related code block in the processor has been covered by unit tests,
> however, since unit test uses MockProcessSession, it skips check conditions
> in StandardProcessSession. MockProcessSession should be updated, too, in
> order to catch this type of issue with Unit testing.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)