Repository: nifi Updated Branches: refs/heads/master 9cde92da1 -> 38c782c30
NIFI-1650: Ensure that we seek to the appropriate offset within the Content Claim when downloading content of a FlowFile Project: http://git-wip-us.apache.org/repos/asf/nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/d3578a7c Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/d3578a7c Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/d3578a7c Branch: refs/heads/master Commit: d3578a7c03835fb55f90fa25856f6cc7ae824994 Parents: 9cde92d Author: Mark Payne <[email protected]> Authored: Sat Mar 19 11:18:02 2016 -0400 Committer: Mark Payne <[email protected]> Committed: Mon Mar 21 10:30:23 2016 -0400 ---------------------------------------------------------------------- .../org/apache/nifi/controller/FlowController.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/nifi/blob/d3578a7c/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java index 6d09bf6..c9aaceb 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java @@ -158,6 +158,8 @@ import org.apache.nifi.reporting.ReportingInitializationContext; import org.apache.nifi.reporting.ReportingTask; import org.apache.nifi.reporting.Severity; import org.apache.nifi.scheduling.SchedulingStrategy; +import org.apache.nifi.stream.io.LimitingInputStream; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.util.FormatUtils; import org.apache.nifi.util.NiFiProperties; import org.apache.nifi.util.ReflectionUtils; @@ -3381,7 +3383,7 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R requireNonNull(requestor); requireNonNull(requestUri); - final InputStream stream; + InputStream stream; final ResourceClaim resourceClaim; final ContentClaim contentClaim = flowFile.getContentClaim(); if (contentClaim == null) { @@ -3390,6 +3392,12 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R } else { resourceClaim = flowFile.getContentClaim().getResourceClaim(); stream = contentRepository.read(flowFile.getContentClaim()); + final long contentClaimOffset = flowFile.getContentClaimOffset(); + if (contentClaimOffset > 0L) { + StreamUtils.skip(stream, contentClaimOffset); + } + + stream = new LimitingInputStream(stream, flowFile.getSize()); } // Register a Provenance Event to indicate that we replayed the data. @@ -3406,7 +3414,8 @@ public class FlowController implements EventAccess, ControllerServiceProvider, R .setDetails("Download of Content requested by " + requestor + " for " + flowFile); if (contentClaim != null) { - sendEventBuilder.setCurrentContentClaim(resourceClaim.getContainer(), resourceClaim.getSection(), resourceClaim.getId(), contentClaim.getOffset(), flowFile.getSize()); + sendEventBuilder.setCurrentContentClaim(resourceClaim.getContainer(), resourceClaim.getSection(), resourceClaim.getId(), + contentClaim.getOffset() + flowFile.getContentClaimOffset(), flowFile.getSize()); } final ProvenanceEventRecord sendEvent = sendEventBuilder.build();
