- 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):
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.