[ 
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)

Reply via email to