You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Martin Grigorov (JIRA)" <ji...@apache.org> on 2019/01/11 11:39:00 UTC

[jira] [Assigned] (WICKET-6629) OOM (and disk) in AsynchronousPageStore

     [ https://issues.apache.org/jira/browse/WICKET-6629?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Martin Grigorov reassigned WICKET-6629:
---------------------------------------

    Assignee: Martin Grigorov

> OOM (and disk) in AsynchronousPageStore
> ---------------------------------------
>
>                 Key: WICKET-6629
>                 URL: https://issues.apache.org/jira/browse/WICKET-6629
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 8.2.0, 9.0.0
>            Reporter: Sverre Boschman
>            Assignee: Martin Grigorov
>            Priority: Major
>              Labels: serialization
>         Attachments: AsyncPageStoreManagerTest.java
>
>
> Symptoms:
>  # Out of memory on DiskDataStore.sessionEntryMap, map contains tens of thousands of DiskDataStore$SessionEntry's
>  # The vm only contains a few hundred PageStoreManager$SessionEntry's. This is expected, but not consistent with the number of DiskDataStore$SessionEntry's
>  # Slowly growing disk usage, the Wicket filestore contains millions of directories, up to the point where even ls becomes unusable.
>  
> Snippet from our productions logs (Wicket 8.2.0):
> {code:java}
> 2019-01-09 17:09:40,662 DEBUG [org.apache.wicket.session.HttpSessionStore] (default task-2513) Session unbound: 5nSIPXlkpRkGu5Oo3_wuwf801Y6TM3K1_k-95uIi
> 2019-01-09 17:09:40,662 DEBUG [org.apache.wicket.pageStore.DiskDataStore] (default task-2513) Removing data for pages in session with id '5nSIPXlkpRkGu5Oo3_wuwf801Y6TM3K1_k-95uIi'
> 2019-01-09 17:09:40,663 DEBUG [org.apache.wicket.pageStore.AsynchronousDataStore] (Wicket-AsyncDataStore-PageSavingThread) PageSavingRunnable:: Saving asynchronously: Entry [sessionId=5nSIPXlkpRkGu5Oo3_wuwf801Y6TM3K1_k-95uIi, pageId=2]...
> 2019-01-09 17:09:40,663 DEBUG [org.apache.wicket.pageStore.DiskDataStore] (Wicket-AsyncDataStore-PageSavingThread) Storing data for page with id '2' in session with id '5nSIPXlkpRkGu5Oo3_wuwf801Y6TM3K1_k-95uIi'
> {code}
> Problem (as far as I can tell) 
> The PageSavingRunnable of the AsynchronousPageStore saves entries to the DiskDataStore after the corresponding session has been invalidated and its DiskDataStore has been cleaned. Because the session is destroyed according to the container and Wicket session handling there is nothing triggering a cleanup for this session anymore.
>  
> Attached is a testcase (master branch) to showcase what is happening. Because it is a timing issue I 'faked' the testcase and temporarily stopped the PageSavingRunnable to create a scenario where the PageSavingRunnable would save an entry for an already invalidated session.
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)