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

Dan Haywood updated ISIS-1396:
------------------------------
    Description: 
In the contactapp (github.com/incodehq/contactapp), if edit a ContactGroup, 
then the Country title/icon are shown as null.  This seems to be because they 
are being rendered against a stale version of the ContactGroup, ie after the 
JDO transaction has completed.

Two different fixes.

The first would seem to be to move the stuff that builds the EntityPage 
component hierarchy out of the EntityPage constructor and into the EntityPage's 
onBeforeRender() method.

This works, but does solve the underlying issue.  Talking with martin-g, he 
says this ought not to be necessary and pointed to a possible issue with the 
EntityModel (impl of LoadableDetachableModel).

Further investigation shows that this is indeed where the issue is.  
EntityModel holds a lazily-populated cache of ScalarModels, keyed by 
property(Id).  This is not cleared down on detach, meaning that a subsequent 
rendering of the property containing the reference to the country is using a 
stale ObjectAdapter (never detached) that refers to a pojo that was reset at 
the end of the preceding transaction.



  was:
In the contactapp (github.com/incodehq/contactapp), if edit a ContactGroup, 
then the Country title/icon are shown as null.  This seems to be because they 
are being rendered against a stale version of the ContactGroup, ie after the 
JDO transaction has completed.

One fix would seem to be to move the stuff that builds the EntityPage component 
hierarchy out of the EntityPage constructor and into the EntityPage's 
onBeforeRender() method.





> Some elements on an entity page can be rendered against stale data.
> -------------------------------------------------------------------
>
>                 Key: ISIS-1396
>                 URL: https://issues.apache.org/jira/browse/ISIS-1396
>             Project: Isis
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.12.1
>            Reporter: Dan Haywood
>            Assignee: Dan Haywood
>            Priority: Minor
>             Fix For: 1.13.0
>
>
> In the contactapp (github.com/incodehq/contactapp), if edit a ContactGroup, 
> then the Country title/icon are shown as null.  This seems to be because they 
> are being rendered against a stale version of the ContactGroup, ie after the 
> JDO transaction has completed.
> Two different fixes.
> The first would seem to be to move the stuff that builds the EntityPage 
> component hierarchy out of the EntityPage constructor and into the 
> EntityPage's onBeforeRender() method.
> This works, but does solve the underlying issue.  Talking with martin-g, he 
> says this ought not to be necessary and pointed to a possible issue with the 
> EntityModel (impl of LoadableDetachableModel).
> Further investigation shows that this is indeed where the issue is.  
> EntityModel holds a lazily-populated cache of ScalarModels, keyed by 
> property(Id).  This is not cleared down on detach, meaning that a subsequent 
> rendering of the property containing the reference to the country is using a 
> stale ObjectAdapter (never detached) that refers to a pojo that was reset at 
> the end of the preceding transaction.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to