Github user mosermw commented on a diff in the pull request:
https://github.com/apache/nifi/pull/905#discussion_r75698608
--- Diff:
nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/UnpackContent.java
---
@@ -182,15 +182,18 @@ public void onStopped() {
public void onScheduled(ProcessContext context) throws
ProcessException {
if (fileFilter == null) {
fileFilter =
Pattern.compile(context.getProperty(FILE_FILTER).getValue());
- tarUnpacker = new TarUnpacker(fileFilter);
- zipUnpacker = new ZipUnpacker(fileFilter);
- flowFileStreamV3Unpacker = new FlowFileStreamUnpacker(new
FlowFileUnpackagerV3());
- flowFileStreamV2Unpacker = new FlowFileStreamUnpacker(new
FlowFileUnpackagerV2());
- flowFileTarUnpacker = new FlowFileStreamUnpacker(new
FlowFileUnpackagerV1());
}
+ }
+
+ private void initPackagers(ProcessContext context) {
+ tarUnpacker = new TarUnpacker(fileFilter);
+ zipUnpacker = new ZipUnpacker(fileFilter);
+ flowFileStreamV3Unpacker = new FlowFileStreamUnpacker(new
FlowFileUnpackagerV3());
+ flowFileStreamV2Unpacker = new FlowFileStreamUnpacker(new
FlowFileUnpackagerV2());
+ flowFileTarUnpacker = new FlowFileStreamUnpacker(new
FlowFileUnpackagerV1());
--- End diff --
With this, we will create 5 unpacker objects on each onTrigger(). It works
but it's inefficient and I think there's a better way.
What do you think of avoiding construction of flowFileTarUnpacker or
flowFileStreamV2Unpacker or flowFileStreamV3Unpacker in the onScheduled()
method, but instead construct the appropriate one in the initUnpacker() method?
Inside initUnpacker() the tarUnpacker and zipUnpacker can be reused but
FlowFileStreamUnpacker can be constructed anew.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---