[ 
https://issues.apache.org/jira/browse/CAUSEWAY-2234?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Daniel Keir Haywood reassigned CAUSEWAY-2234:
---------------------------------------------

    Fix Version/s: 2.1.0
                       (was: 2.2.0)
         Assignee: Daniel Keir Haywood  (was: Andi Huber)

> [Performance] During the render phase, don't populate the execution call 
> graphs with results of mixins being invoked.
> ---------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAUSEWAY-2234
>                 URL: https://issues.apache.org/jira/browse/CAUSEWAY-2234
>             Project: Causeway
>          Issue Type: Improvement
>          Components: Viewer Wicket
>            Reporter: Daniel Keir Haywood
>            Assignee: Daniel Keir Haywood
>            Priority: Minor
>              Labels: perfomance
>             Fix For: 2.1.0
>
>         Attachments: screenshot-1.png
>
>
> This is somewhat similar to ISIS-1656, which is to flush audit/publishing etc 
> at the end of the ACTION phase, rather than the RENDER phase.
> More broadly stated: RENDERing shouldn't have any side-effects.
> ~~~
> Looking at the code today, we can see that in OneToOneAssociationMixedIn 
> there's a hack:
> {code:java}
> @Override
> public ManagedObject get(
>         final ManagedObject mixedInAdapter,
>         final InteractionInitiatedBy interactionInitiatedBy) {
>     val mixinAdapter = mixinAdapterFor(mixinType, mixedInAdapter);
>     return getPublishingServiceInternal().withPublishingSuppressed(
>             () -> mixinAction.executeInternal(
>                     mixinAdapter, mixedInAdapter, Can.empty(), 
> interactionInitiatedBy)
>     );
> }
>  {code}
> which prevents the action invocation in the render phase from publishing 
> anything.  
> However, inspection of the internal data structures does currently show that 
> the Interaction executionGraph (push, pop) gets populated, there is no 
> corresponding hack... see attached screenshot, that shows a number of 
> executions for all of the contributed properties of a SimpleObject.  This 
> isn't harmful per se, but it is odd that we spend all this effort to create 
> the execution graph for it to be consumed by no-one at all.
> The bottom line is that actions don't know which phase they are being 
> executed in, and so they do all this extra work.
> Perhaps the solution might be to include the phase in the InteractionContext, 
> so we can therefore avoid this unnecessary work populating the executionGraph.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to