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

Robin Shine commented on WICKET-4063:
-------------------------------------

Modifying "storeData" method like below seems to fix this issue:


                Entry entry = new Entry(sessionId, id, data);
                String key = getKey(entry);
                entryMap.put(key, entry);
                try
                {
                        boolean added = entries.offer(entry, OFFER_WAIT, 
TimeUnit.MILLISECONDS);

                        if (added == false)
                        {
                                log.debug("Storing synchronously page with id 
'{}' in session '{}'", id, sessionId);
                                entryMap.remove(key);
                                dataStore.storeData(sessionId, id, data);
                        }
                }
                catch (InterruptedException e)
                {
                        log.error(e.getMessage(), e);
                        entryMap.remove(key);
                        dataStore.storeData(sessionId, id, data);
                }


> Theading issue in AsynchronousDataStore causes OutOfMemory exception
> --------------------------------------------------------------------
>
>                 Key: WICKET-4063
>                 URL: https://issues.apache.org/jira/browse/WICKET-4063
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.5.0
>            Reporter: Robin Shine
>            Priority: Critical
>
> Considering below time sequence:
> 1. "entries.offer" is called during "storeData". 
> 2. page saving thread comes in, and poll the entry. Then "entryMap.remove" is 
> called. Nothing will be removed since entry has not been added to entryMap 
> yet. 
> 3. "entryMap.put" is called during "storeData". 
> The result is that entries in "entryMap" may never be removed, and the 
> entryMap can increase infinitely. 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to