You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by "Matt Burgess (JIRA)" <ji...@apache.org> on 2019/01/29 16:00:00 UTC

[jira] [Updated] (NIFI-5974) SplitContent: missing Fragment Attributes if the splitter wasn't found

     [ https://issues.apache.org/jira/browse/NIFI-5974?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Matt Burgess updated NIFI-5974:
-------------------------------
    Affects Version/s:     (was: 1.8.0)
               Status: Patch Available  (was: Open)

> SplitContent: missing Fragment Attributes if the splitter wasn't found
> ----------------------------------------------------------------------
>
>                 Key: NIFI-5974
>                 URL: https://issues.apache.org/jira/browse/NIFI-5974
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Extensions
>            Reporter: Alexey Durov
>            Priority: Major
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> If there is no splitter in the input Flow File and nothing was changed the Fragment Attributes are missing in the result. That breaks the MergeContent processor as it doesn't know how many fragments are expected.
> For example if the splitter is "," and the targed content is "UVAT" there are no {{fragment.count}}, {{fragment.identifier}}, {{fragment.index}}, {{segment.original.filename}} attributes in the result.
> *Expected result*: "splits" flow file has mentioned attributes.
> Here is a "red" test:
> {code}
> @Test
> public void testNoSplitterInString() {
> 	
> 	String content = "UVAT";
> 	
> 	final TestRunner runner = TestRunners.newTestRunner(new SplitContent());
> 	runner.setProperty(SplitContent.FORMAT, SplitContent.UTF8_FORMAT.getValue());
> 	runner.setProperty(SplitContent.BYTE_SEQUENCE, ",");
> 	runner.setProperty(SplitContent.KEEP_SEQUENCE, "false");
> 	runner.setProperty(SplitContent.BYTE_SEQUENCE_LOCATION, SplitContent.TRAILING_POSITION.getValue());
> 	runner.enqueue(content.getBytes());
> 	runner.run();
> 	runner.assertTransferCount(SplitContent.REL_SPLITS, 1);
> 	MockFlowFile splitResult = runner.getFlowFilesForRelationship(SplitContent.REL_SPLITS).get(0);
> 	splitResult.assertAttributeExists(FRAGMENT_ID);
> 	splitResult.assertAttributeExists(SEGMENT_ORIGINAL_FILENAME);
> 	splitResult.assertAttributeEquals(FRAGMENT_COUNT, "1");
> 	splitResult.assertAttributeEquals(FRAGMENT_INDEX, "1");
> 	runner.assertTransferCount(SplitContent.REL_ORIGINAL, 1);
> 	runner.assertQueueEmpty();
> 	final List<MockFlowFile> splits = runner.getFlowFilesForRelationship(SplitContent.REL_SPLITS);
> 	splits.get(0).assertContentEquals(content);
> }
> {code}
> The fix is ready, pending PR



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)