[
https://issues.apache.org/jira/browse/WICKET-3108?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12921450#action_12921450
]
Igor Vaynberg commented on WICKET-3108:
---------------------------------------
patches look ok.
> The real unanswered question I have is this: must we really create the page
> map when the link is first rendered?
no, only a pagemap name should be appended to the url. the pagemap itself
should be created when the link is clicked.
> Problems with page maps stored in session
> -----------------------------------------
>
> Key: WICKET-3108
> URL: https://issues.apache.org/jira/browse/WICKET-3108
> Project: Wicket
> Issue Type: Bug
> Components: wicket
> Affects Versions: 1.4.12
> Reporter: Jeremy Thomerson
> Assignee: Jeremy Thomerson
> Priority: Minor
> Attachments: pagemapstuff-quickstart.tar.gz, problem-1.patch,
> problem-2.patch, problem-3.patch
>
>
> A client engaged me to assist in fixing multiple problems they found while
> writing a custom page map eviction strategy for page maps that have not been
> accessed in a while. Digging into the first problem revealed a few others.
> I'd like someone who is more familiar than me with the session and page map
> stuff to review this before I commit it. The quick start attached
> demonstrates the problems. I have yet to write test cases that can be added
> to the suite to replicate these issues.
> PROBLEM 1:
> If you call IPageMap.remove(), the page map is not actually removed because
> it's in the dirty objects list, which means that it gets set back on the
> session in the requestDetached() method. The quickstart demonstrates this in
> a link for ease of demonstration, but in reality, it applies even if someone
> is doing custom page map eviction in their request cycle somewhere.
> PROBLEM 2:
> It seems to be a safe assumption that every page map that is used in the
> session should also be in usedPageMaps, and that this map should always be
> exactly in sync with what's actually in your session (as attributes). Right
> now, they are not in sync. First, the default page map was not added to
> usedPageMaps in the dirtyPageMap(IPageMap) method. Second, when page maps
> are created, they are not dirtied (which means they are not in the
> usedPageMaps collection), although they are set as attributes on the session
> immediately. This causes a problem in the newPageMap(String) method with
> actually adhering to the max number you set.
> PROBLEM 3:
> If you have a bunch of popup links on a page, they can create more page maps
> than are allowed, and the number of page maps stored in the session grows
> beyond the limit of what you've specified. The real unanswered question I
> have is this: must we really create the page map when the link is first
> rendered? Or could we wait until it is clicked?
> NOTE: the fix for problems 2 and 3 relies on the fix for problem 1 being
> committed, because the call to pm.remove() in newPageMap(IPageMap) will not
> work without the fix for problem 1
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.