Flash Persist Variables might be cleared too aggressively
---------------------------------------------------------
Key: TAP5-320
URL: https://issues.apache.org/jira/browse/TAP5-320
Project: Tapestry 5
Issue Type: Bug
Components: tapestry-core
Affects Versions: 5.0.16
Reporter: Fernando
So yes it looks like the Flash variables of a Page are scrubbed when the page
is removed from the cache, no matter if it's rendered or not. The stack trace
is below.
I know that my example might be a bit extreme, but here are some other usecases
that should be affected as well:
-- Page Rendering
1) render PageA (set flash variable).
2) render PageB
a) while rendering, it loads PageA for some reason
(RequestPageCache.get, PageLink, ActionLink, etc)
b) while loading PageA, its flash variables are cleared
3) render PageA (flash variable is null)
-- Ajax
1) render PageA (set flash variable).
2) Ajax callback to app
a) either hitting PageA directly, or hitting PageB that
refers to PageA in some way
( PageLink, ActionLink, RequestPageCache.get )
b) while loading PageA, its flash variables are cleared
3) render PageA (flash variable is null)
STACK TRACE:
showing that flash variables are cleared from pages once they are loaded, not
once they are rendered, so it can be cleared way before we have a change to
render it.
setAttribute( flash:core/Start:status.cheerform:defaultTracker, null )
at
org.apache.tapestry5.internal.services.SessionImpl.setAttribute(SessionImpl.java:50)
at
org.apache.tapestry5.internal.services.FlashPersistentFieldStrategy.didReadChange(FlashPersistentFieldStrategy.java:41)
at
org.apache.tapestry5.internal.services.AbstractSessionPersistentFieldStrategy.gatherFieldChanges(AbstractSessionPersistentFieldStrategy.java:65)
at
org.apache.tapestry5.internal.services.PersistentFieldManagerImpl.gatherChanges(PersistentFieldManagerImpl.java:65)
at
$PersistentFieldManager_11d5412d051.gatherChanges($PersistentFieldManager_11d5412d051.java)
at
org.apache.tapestry5.internal.structure.PageImpl.getFieldChange(PageImpl.java:185)
at
org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.getFieldChange(InternalComponentResourcesImpl.java:111)
at
org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.hasFieldChange(InternalComponentResourcesImpl.java:121)
at com.protrade.fanwars.base.pages.Start.containingPageDidAttach(Start.java)
at
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$2.run(ComponentPageElementImpl.java:80)
at
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:912)
at
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.containingPageDidAttach(ComponentPageElementImpl.java:726)
at
org.apache.tapestry5.internal.structure.PageImpl.attached(PageImpl.java:151)
at
org.apache.tapestry5.internal.services.RequestPageCacheImpl.get(RequestPageCacheImpl.java:55)
at $RequestPageCache_11d5412d04b.get($RequestPageCache_11d5412d04b.java)
at $RequestPageCache_11d5412d046.get($RequestPageCache_11d5412d046.java)
at
com.protrade.facebook.base.services.FbForceModeFilter.handle(FbForceModeFilter.java:57)
(this is my PageRenderRequestFilter which cuts off page rendering)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]