[
https://issues.apache.org/jira/browse/NIFI-3249?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15780758#comment-15780758
]
ASF GitHub Bot commented on NIFI-3249:
--------------------------------------
Github user JPercivall commented on a diff in the pull request:
https://github.com/apache/nifi/pull/1356#discussion_r93949217
--- Diff:
nifi-nar-bundles/nifi-update-attribute-bundle/nifi-update-attribute-processor/src/main/java/org/apache/nifi/processors/attributes/UpdateAttribute.java
---
@@ -259,6 +264,14 @@ public void onScheduled(final ProcessContext context)
throws IOException {
context.getStateManager().setState(tempMap, Scope.LOCAL);
}
+
+ defaultActions = getDefaultActions(context.getProperties());
--- End diff --
Unless I'm missing something, moving this initialize step to the
onScheduled wouldn't affect anything regarding attribute evaluation since the
evaluation of the EL isn't done until here[1]. This is just moving the
iteration over all the properties values[2] from the ontrigger to onScheduled.
[1]
https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-update-attribute-bundle/nifi-update-attribute-processor/src/main/java/org/apache/nifi/processors/attributes/UpdateAttribute.java#L608
[2]
https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-update-attribute-bundle/nifi-update-attribute-processor/src/main/java/org/apache/nifi/processors/attributes/UpdateAttribute.java#L660
> UpdateAttribute performance improvements
> ----------------------------------------
>
> Key: NIFI-3249
> URL: https://issues.apache.org/jira/browse/NIFI-3249
> Project: Apache NiFi
> Issue Type: Improvement
> Reporter: Bryan Rosander
> Assignee: Bryan Rosander
> Priority: Minor
> Attachments: after.png, before.png
>
>
> UpdateAttribute does a lot of work in every onTrigger() that it doesn't need
> to.
> The default actions map can be built at schedule time so that it doesn't need
> to be done on every trigger.
> getPropertyValue() can be implemented using ConcurrentMap.computeIfAbsent()
> Update actions can be ignored if there is a delete action for the same
> attribute.
> Only need to call processSession.updateAttributes() and
> processSession.deleteAttributes() if there are attributes to update and
> delete respectively.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)