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

Jan Kriesten commented on WICKET-1773:
--------------------------------------


Behavior is reproducable when sessions are invalidated not within wicket but 
e.g. Spring Security.

It turns out that DiskPageStore#unbind calls flushPagesToSaveList() which again 
tries to write to the no longer existing SessionStore.

Just clearing the list of pages instead of trying to write them solves the 
problem:

---8<---
public void unbind(String sessionId)
        {       
                SessionEntry entry = 
(SessionEntry)sessionIdToEntryMap.remove(sessionId);
                if (entry != null)
                {               
                        if (isSynchronous())
                        {       
                                entry.unbind();
                        }               
                        else    
                        {
                                List pages = getPagesToSaveList(sessionId);
                                if( pages!=null )
                                        pages.clear();
                                entry.unbind();
                                pagesToSaveAll.remove(sessionId);
                        }
                }
        }
---8<---


> DiskPageStore-FileNotFoundException
> -----------------------------------
>
>                 Key: WICKET-1773
>                 URL: https://issues.apache.org/jira/browse/WICKET-1773
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.3.4
>            Reporter: Jan Kriesten
>            Assignee: Matej Knopp
>             Fix For: 1.3.5
>
>
> With the current 1.3-Snapshot, I encounter problems with DiskPageStore:
> ---8<---
> 09:30:43.151 ERROR [.wicket.protocol.http.pagestore.DiskPageStore] - Error 
> flushing page
> java.lang.RuntimeException: java.io.FileNotFoundException: 
> /usr/local/www/services/local.silberlicht.de/html/WEB-INF/tmp/Silberlicht-filestore/abcgm_hyTIaiqgnqDNmUr/pm-null
>  (No such file or directory)
>     at 
> org.apache.wicket.protocol.http.pagestore.FileChannelPool.newFileChannel(FileChannelPool.java:104)
>     at 
> org.apache.wicket.protocol.http.pagestore.FileChannelPool.getFileChannel(FileChannelPool.java:171)
>     at 
> org.apache.wicket.protocol.http.pagestore.DiskPageStore$SessionEntry.savePage(DiskPageStore.java:241)
>     at 
> org.apache.wicket.protocol.http.pagestore.DiskPageStore.flushPagesToSaveList(DiskPageStore.java:891)
>     at 
> org.apache.wicket.protocol.http.pagestore.DiskPageStore$PageSavingThread.run(DiskPageStore.java:961)
>     at java.lang.Thread.run(Thread.java:613)
> Caused by: java.io.FileNotFoundException: 
> /usr/local/www/services/local.silberlicht.de/html/WEB-INF/tmp/Silberlicht-filestore/abcgm_hyTIaiqgnqDNmUr/pm-null
>  (No such file or directory)
>     at java.io.RandomAccessFile.open(Native Method)
>     at java.io.RandomAccessFile.<init>(RandomAccessFile.java:212)
>     at 
> org.apache.wicket.protocol.http.pagestore.FileChannelPool.newFileChannel(FileChannelPool.java:99)
>     ... 5 common frames omitted
> ---8<---
> The path 
> /usr/local/www/services/local.silberlicht.de/html/WEB-INF/tmp/Silberlicht-filestore/
>  actually exists and has the proper rights - so creation of temporary 
> directories/files should be possible (actually, the directory was created by 
> the wicket app).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to