[infinispan-issues] [JBoss JIRA] Commented: (ISPN-1329) org.infinispan.loaders.decorators.AsyncStore leads to OutOfMemoryExceptions

Manik Surtani (JIRA) jira-events at lists.jboss.org
Fri Aug 12 06:53:10 EDT 2011


    [ https://issues.jboss.org/browse/ISPN-1329?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12620642#comment-12620642 ] 

Manik Surtani commented on ISPN-1329:
-------------------------------------

The problem with this approach is that the store will become a sync store the moment that limit is hit because of the rate of transactions in your producer threads.  So it doesn't make any sense to use the async store in this case, you won't get any of its benefits, you may as well just use a sync store.

> org.infinispan.loaders.decorators.AsyncStore leads to OutOfMemoryExceptions
> ---------------------------------------------------------------------------
>
>                 Key: ISPN-1329
>                 URL: https://issues.jboss.org/browse/ISPN-1329
>             Project: Infinispan
>          Issue Type: Bug
>          Components: Configuration, Loaders and Stores
>    Affects Versions: 5.0.0.CR8
>            Reporter: Robert Stupp
>            Assignee: Manik Surtani
>
> When I configure
> {code} 
> <async
>     enabled="true"
>     threadPoolSize="3"/>
> {code}
> the implementation creates three threads names "CoalescedAsyncStore" per cache store.
> When adding a large amount of data to the cache (for example indexing a lot of Lucene documents), the application will stop working with a lot of OutOfMemory exceptions.
> This is caused by the implementation of org.infinispan.loaders.decorators.AsyncStore that uses an unbounded LinkedBlockingQueue.
> A lot of worker threads push a huge amount of modifications into the queues, but the underlying cache store is not able to handle throughput.
> As a quick solution change
> {code}
>    private final LinkedBlockingQueue<Modification> changesDeque = new LinkedBlockingQueue<Modification>();
> {code}
> to
> {code}
>    private final LinkedBlockingQueue<Modification> changesDeque = new LinkedBlockingQueue<Modification>(512);
> {code}
> and add a new configuration option to the async element, that specifies the capacity of the Linked Blocking Queue.

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

        


More information about the infinispan-issues mailing list