You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Robin Shine (JIRA)" <ji...@apache.org> on 2011/09/19 07:54:09 UTC

[jira] [Commented] (WICKET-4063) Theading issue in AsynchronousDataStore causes OutOfMemory exception

    [ 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