Ok

PageMap is now access without the sync session block. Because it is in the resolve phase.

So or we must make sure that for example PageMap.get(int,int) is only called in the event/respond request
or synchronized the pagemap itself.

I think we have to do the first because what happens if 2 request at the same time happens for the same
page but with different versions? Then a page is rollbacked at the time the user event is called.
But i guess this doesn't happen to much because if the other way around would happen then
so first a page with version=2 and then with version=5 then version 5 would be completely gone anway right now.

So or we make the pagemap synched at some places.
Or we have to make sure the pagemap is only called in the sync block. So the resolve phase shouldn't access the page yet.

johan


On 3/30/06, Martijn Dashorst <[EMAIL PROTECTED]> wrote:
OK,

Further investigation has shown that this is a multithreading issue. I have included my logs for the request that comes in. In my application, a double click is sent to the server (not by purpose, this will be fixed), but this does give this result, which is a major bug IMO. Don't focus on the problem of the double incoming request please, but on the concurrency problem of the pagemap.

To be complete, and give a testcase, this is my markup, causing the double request. Both event listeners set the response page for that request to the same page class with the same parameters, but different instances.
<tr class="hoverable" onClick=
"_javascript_:location.href='';">
<td>
<a href="/iridium/app?wicket:interface=:2:verschillen:1:fotobekijken::ILinkListener" style="float:left;"
>link</a>
</td >
</tr>
In the following log you'll see the acronym STE: this means Stack Trace.




Reply via email to