[ https://issues.apache.org/jira/browse/NIFI-5200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16477492#comment-16477492 ]
ASF GitHub Bot commented on NIFI-5200: -------------------------------------- GitHub user markap14 opened a pull request: https://github.com/apache/nifi/pull/2707 NIFI-5200: Fixed bug that caused the wrong InputStream to be closed b… …y StandardProcessSession if calling Session.read() from the callback of another Session.read(); also changed default of the 'allowSessionStreamManagement' flag from 'false' to 'true' as it will provide performance benefits in some cases and NIFI-516 outlined that it should be 'true' initially but ended up being false when the PR was merged. Thank you for submitting a contribution to Apache NiFi. In order to streamline the review of the contribution we ask you to ensure the following steps have been taken: ### For all changes: - [ ] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message? - [ ] Does your PR title start with NIFI-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character. - [ ] Has your PR been rebased against the latest commit within the target branch (typically master)? - [ ] Is your initial contribution a single, squashed commit? ### For code changes: - [ ] Have you ensured that the full suite of tests is executed via mvn -Pcontrib-check clean install at the root nifi folder? - [ ] Have you written or updated unit tests to verify your changes? - [ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under [ASF 2.0](http://www.apache.org/legal/resolved.html#category-a)? - [ ] If applicable, have you updated the LICENSE file, including the main LICENSE file under nifi-assembly? - [ ] If applicable, have you updated the NOTICE file, including the main NOTICE file found under nifi-assembly? - [ ] If adding new Properties, have you added .displayName in addition to .name (programmatic access) for each of the new properties? ### For documentation related changes: - [ ] Have you ensured that format looks appropriate for the output in which it is rendered? ### Note: Please ensure that once the PR is submitted, you check travis-ci for build issues and submit an update to your PR as soon as possible. You can merge this pull request into a Git repository by running: $ git pull https://github.com/markap14/nifi NIFI-5200 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/nifi/pull/2707.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #2707 ---- commit be419a3f4eb248fc60f8e8df8c9644b6c41a0052 Author: Mark Payne <markap14@...> Date: 2018-05-16T14:16:45Z NIFI-5200: Fixed bug that caused the wrong InputStream to be closed by StandardProcessSession if calling Session.read() from the callback of another Session.read(); also changed default of the 'allowSessionStreamManagement' flag from 'false' to 'true' as it will provide performance benefits in some cases and NIFI-516 outlined that it should be 'true' initially but ended up being false when the PR was merged. ---- > Nested ProcessSession.read resulting in outer stream being closed. > ------------------------------------------------------------------ > > Key: NIFI-5200 > URL: https://issues.apache.org/jira/browse/NIFI-5200 > Project: Apache NiFi > Issue Type: Bug > Components: Core Framework > Affects Versions: 1.6.0 > Reporter: Peter Radden > Assignee: Mark Payne > Priority: Minor > Fix For: 1.7.0 > > > Consider this example processor: > {code:java} > FlowFile ff1 = session.write(session.create(), > (out) -> { out.write(new byte[]{ 'A', 'B' }); }); > FlowFile ff2 = session.write(session.create(), > (out) -> { out.write('C'); }); > session.read(ff1, > (in1) -> { > int a = in1.read(); > session.read(ff2, (in2) -> { int c = in2.read(); }); > int b = in1.read(); > }); > session.transfer(ff1, REL_SUCCESS); > session.transfer(ff2, REL_SUCCESS);{code} > The expectation is that a='A', b='B' and c='C'. > The actual result is that the final call to in1.read() throws due to the > underlying stream being closed by the previous session.read on ff2. > A workaround seems to be to pass the optional parameter to session.read of > allowSessionStreamManagement=true. > Is this expected that nested reads used in this way will not work? -- This message was sent by Atlassian JIRA (v7.6.3#76005)