[ 
https://issues.apache.org/jira/browse/WICKET-6452?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16128465#comment-16128465
 ] 

KAHA commented on WICKET-6452:
------------------------------

It looks like that problem is not in PageProvider.getPageInstance() because 
there is a code which after deserialization when provision is null call 
Provision().resolve(); and this method try to get page from store BUT ...

I have done a little hack .. 
I have done in my WabApplication class in method 
protected void internalInit() { 
   .....
setPageManagerProvider(new DefaultPageManagerProvider(this) {
                        
                        @Override
                        protected IPageStore newPageStore(IDataStore dataStore) 
{
                                int inmemoryCacheSize = 
getStoreSettings().getInmemoryCacheSize();
                                ISerializer pageSerializer = 
application.getFrameworkSettings().getSerializer();
                                return new DefaultPageStore(pageSerializer, 
dataStore, inmemoryCacheSize) {
                                        
                                        @Override
                                        public IManageablePage getPage(String 
sessionId, int pageId) {
                                                IManageablePage page = 
super.getPage(sessionId, pageId);
                                                LOG.warn("Get Page "+pageId+" 
for session "+sessionId+" result "+page);
                                                return page;
                                        }
                                        @Override
                                        public void storePage(String sessionId, 
IManageablePage page) {
                                                super.storePage(sessionId, 
page);
                                                LOG.warn("Store Page 
"+page.getPageId()+ " on session "+sessionId);                                  
   
                                        }
                                };
                        }       

It is same PageManagerProvider as it is there by default, only including LOG 
whihe stroing page and geting page. And here is the problem ..  Here is LOG. As 
you can see, for example PAGE with id 3 was stored, but Get page with id 3 on 
same session return NULL.

2017-08-16 09:24:57.569 WARN  - AbraWebApplication         - Store Page 1 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:57.614 WARN  - AbraWebApplication         - Store Page 4 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:57.645 WARN  - AbraWebApplication         - Store Page 3 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:57.686 WARN  - AbraWebApplication         - Store Page 5 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:57.718 WARN  - AbraWebApplication         - Store Page 6 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:57.730 WARN  - AbraWebApplication         - Get Page 3 for 
session yw58aresd9pb25i3n462j7k9 result null
2017-08-16 09:24:57.761 WARN  - AbraWebApplication         - Store Page 2 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:57.793 WARN  - AbraWebApplication         - Store Page 3 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:57.833 WARN  - AbraWebApplication         - Store Page 4 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:57.868 WARN  - AbraWebApplication         - Store Page 6 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:57.910 WARN  - AbraWebApplication         - Store Page 5 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:57.944 WARN  - AbraWebApplication         - Store Page 2 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:57.978 WARN  - AbraWebApplication         - Store Page 3 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:58.010 WARN  - AbraWebApplication         - Store Page 6 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:58.011 WARN  - AbraWebApplication         - Get Page 6 for 
session yw58aresd9pb25i3n462j7k9 result [Page class = 
eu.abra.app.igate.runtime.DynamicPage, id = 6, render count = 1]
2017-08-16 09:24:58.047 WARN  - AbraWebApplication         - Store Page 2 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:58.102 WARN  - AbraWebApplication         - Store Page 7 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:58.126 WARN  - AbraWebApplication         - Get Page 2 for 
session yw58aresd9pb25i3n462j7k9 result [Page class = 
eu.abra.app.igate.runtime.DynamicPage, id = 2, render count = 1]
2017-08-16 09:24:58.168 WARN  - AbraWebApplication         - Store Page 7 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:58.213 WARN  - AbraWebApplication         - Store Page 5 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:58.249 WARN  - AbraWebApplication         - Store Page 4 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:58.277 WARN  - AbraWebApplication         - Store Page 5 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:58.301 WARN  - AbraWebApplication         - Store Page 6 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:58.311 WARN  - AbraWebApplication         - Get Page 7 for 
session yw58aresd9pb25i3n462j7k9 result null
2017-08-16 09:24:58.326 WARN  - AbraWebApplication         - Store Page 4 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:58.366 WARN  - AbraWebApplication         - Store Page 1 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:58.383 WARN  - AbraWebApplication         - Get Page 4 for 
session yw58aresd9pb25i3n462j7k9 result null
2017-08-16 09:24:58.383 WARN  - AbraWebApplication         - Get Page 5 for 
session yw58aresd9pb25i3n462j7k9 result null
2017-08-16 09:24:58.406 WARN  - AbraWebApplication         - Store Page 2 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:58.448 WARN  - AbraWebApplication         - Get Page 6 for 
session yw58aresd9pb25i3n462j7k9 result null
2017-08-16 09:24:58.454 WARN  - AbraWebApplication         - Store Page 1 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:58.493 WARN  - AbraWebApplication         - Store Page 6 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:58.499 WARN  - AbraWebApplication         - Get Page 2 for 
session yw58aresd9pb25i3n462j7k9 result null
2017-08-16 09:24:58.499 WARN  - AbraWebApplication         - Get Page 1 for 
session yw58aresd9pb25i3n462j7k9 result null
2017-08-16 09:24:58.572 WARN  - AbraWebApplication         - Store Page 2 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:58.649 WARN  - AbraWebApplication         - Store Page 8 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:58.722 WARN  - AbraWebApplication         - Store Page 8 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:58.785 WARN  - AbraWebApplication         - Get Page 8 for 
session yw58aresd9pb25i3n462j7k9 result null
2017-08-16 09:24:58.839 WARN  - AbraWebApplication         - Store Page 9 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:58.882 WARN  - AbraWebApplication         - Store Page 10 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:58.916 WARN  - AbraWebApplication         - Store Page 10 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:58.960 WARN  - AbraWebApplication         - Store Page 9 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:58.999 WARN  - AbraWebApplication         - Get Page 10 for 
session yw58aresd9pb25i3n462j7k9 result null
2017-08-16 09:24:59.011 WARN  - AbraWebApplication         - Store Page 11 on 
session yw58aresd9pb25i3n462j7k9
2017-08-16 09:24:59.057 WARN  - AbraWebApplication         - Get Page 9 for 
session yw58aresd9pb25i3n462j7k9 result null



> Problem while multiple opening same page in WICkET 8.0.0-M6
> -----------------------------------------------------------
>
>                 Key: WICKET-6452
>                 URL: https://issues.apache.org/jira/browse/WICKET-6452
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 8.0.0-M6
>         Environment: Windows 10 64bit CZ Java(TM) SE Runtime Environment 
> (build 1.8.0_131-b11)
>            Reporter: KAHA
>         Attachments: ABRA BI - Google Chrome 15.08.2017 13_33_45.mp4, ABRA BI 
> - Google Chrome 15.08.2017 13_33_45_x264.mov
>
>
> As you can see on the video, there is a problem when I multiple open same 
> page. Each one page is rendered again and again and again (you can see it on 
> rapidly increasing page number). There were no problem with same excercise on 
> Wicket 7. 
> I think that problem is in method 
> org.apache.wicket.core.request.handler.PageProvider.getPageInstance(). In 
> Wicket 7 there was 
> if (pageInstance == null)
> {
>       resolvePageInstance(pageId, pageClass, pageParameters, renderCount);
>       if (pageInstance == null)
>       {
>               throw new PageExpiredException("Page with id '" + pageId + "' 
> has expired.");
>       }
> }
> return pageInstance;
> If pageInstance is null, method resolvePageInstance is called and 
> resolvePageInstance first trying to load page stored on disk (stored thanks 
> Serialization) and it will success. If there is no page stored on disk with 
> this pageID, than getPageSource().newPageInstance( ...  is called to create 
> new page instance.
> On other hand on the new wicket 8 same method 
> org.apache.wicket.core.request.handler.PageProvider.getPageInstance() looks 
> like this
> return getProvision().getPage();
> and In Provision class method getPage looks like this
> if (page == null && doesProvideNewPage())
> {
>               page = getPageSource().newPageInstance(pageClass, 
> pageParameters);
> }
> return page;
> if the page is null, method does not try to load page stored on the disk, but 
> imediatly creates a new instance and this is why same page is created many 
> times repeatly.
> But it is only my guess.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to