[JBoss JIRA] Created: (ISPN-1287) purgerThreads configuration attribute will never be passed to CacheStoreConfig
by Robert Stupp (JIRA)
purgerThreads configuration attribute will never be passed to CacheStoreConfig
------------------------------------------------------------------------------
Key: ISPN-1287
URL: https://issues.jboss.org/browse/ISPN-1287
Project: Infinispan
Issue Type: Bug
Components: Configuration
Affects Versions: 5.0.0.CR8
Reporter: Robert Stupp
Assignee: Manik Surtani
There is a bug in class CacheStoreAdapter that prevents purgerThreads configuration attribute to be passed to CacheStoreConfig.
File: org\infinispan\loaders\CacheLoaderConfig.java
Method: unmarshal(AbstractCacheStoreConfig)
The code is missing the following line:
if (clc instanceof CacheStoreConfig) {
csc.setPurgerThreads(storeConfig.getPurgerThreads()); // MISSING!
}
See ISPN-1286, because enabling parallel purge will not use the global lock.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 2 months
[JBoss JIRA] Created: (ISPN-1290) FileCacheStore default purge interval too short
by Robert Stupp (JIRA)
FileCacheStore default purge interval too short
-----------------------------------------------
Key: ISPN-1290
URL: https://issues.jboss.org/browse/ISPN-1290
Project: Infinispan
Issue Type: Quality Risk
Components: Configuration, Loaders and Stores
Affects Versions: 5.0.0.CR8, 4.2.1.FINAL
Reporter: Robert Stupp
Assignee: Manik Surtani
The default purge interval is defined to be 5000 ms.
When adding a large amount of data to the cache, purging will block the whole application, because it starts - runs for a long time - stops and will be again started immediatly.
This leads to a "logical infinite loop" blocking the application.
This will get even worse when parallel purging (multiThreadedPugre / purgerThreads) is used)
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 2 months
[JBoss JIRA] Created: (ISPN-1291) FileCacheStore implementation leads to purge duration of many minutes and sometimes many hours
by Robert Stupp (JIRA)
FileCacheStore implementation leads to purge duration of many minutes and sometimes many hours
----------------------------------------------------------------------------------------------
Key: ISPN-1291
URL: https://issues.jboss.org/browse/ISPN-1291
Project: Infinispan
Issue Type: Quality Risk
Components: Loaders and Stores
Affects Versions: 5.0.0.CR8, 4.2.1.FINAL
Reporter: Robert Stupp
Assignee: Manik Surtani
Purging in FileCacheStore takes too long.
I have implemented a copy of FileCacheStore with the issues of ISPN-1286 resolved.
So the purgeInternal will both not block the whole application (uses cache key locks instead of a global lock and a large purge interval).
When adding a huge amount of data, the FileCacheStore writes many many thousands of files.
During each purge, all files will be touched - so the time to purge increases until it is no longer acceptable (several minutes to several hours).
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 2 months
[JBoss JIRA] Created: (ISPN-1289) Improve FileCacheStore.loadBucket
by Robert Stupp (JIRA)
Improve FileCacheStore.loadBucket
---------------------------------
Key: ISPN-1289
URL: https://issues.jboss.org/browse/ISPN-1289
Project: Infinispan
Issue Type: Enhancement
Components: Loaders and Stores
Affects Versions: 5.0.0.CR8
Reporter: Robert Stupp
Assignee: Manik Surtani
The method FileCacheStore.loadBucket() does not need to call "new FileInputStream()", when the file is empty (length==0).
So it might be better to add the following lines before the call to "new FileInputStream(bucketFile)":
// BEGIN: new stuff
if (bucketFile.length()==0)
return null;
// END: new stuff
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 2 months
[JBoss JIRA] Created: (ISPN-1288) Purging blocks completely
by Robert Stupp (JIRA)
Purging blocks completely
-------------------------
Key: ISPN-1288
URL: https://issues.jboss.org/browse/ISPN-1288
Project: Infinispan
Issue Type: Bug
Components: Eviction
Affects Versions: 5.0.0.CR8
Reporter: Robert Stupp
Assignee: Manik Surtani
When purging, the whole cache seems to be blocked.
This might be caused by the global lock used in FileCacheStore.purgeInternal().
A solution might be to lock each cache key to be purged. This might be slower, but will not block the whole cache.
(checked with FileCacheStore)
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 2 months
[JBoss JIRA] Created: (ISPN-1286) Parallel purger threads will not be locked globally in FileCacheStore
by Robert Stupp (JIRA)
Parallel purger threads will not be locked globally in FileCacheStore
---------------------------------------------------------------------
Key: ISPN-1286
URL: https://issues.jboss.org/browse/ISPN-1286
Project: Infinispan
Issue Type: Bug
Components: Eviction
Affects Versions: 5.0.0.CR8
Reporter: Robert Stupp
Assignee: Manik Surtani
The function FileCacheStore.purgeInternal() aquires a global lock and releases it after completion.
When multiThreadedPurge is true (which cannot be the case due to another bug, that I'll post later), the lock will be released BEFORE purging has completed.
This is caused by the implementation, that starts N purger threads in parallel but does not wait for them to complete (as I think).
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 2 months
[JBoss JIRA] Created: (ISPN-1277) cannot use tree cache api + indexing
by Michal Linhard (JIRA)
cannot use tree cache api + indexing
------------------------------------
Key: ISPN-1277
URL: https://issues.jboss.org/browse/ISPN-1277
Project: Infinispan
Issue Type: Bug
Components: Querying, Tree API
Affects Versions: 5.0.0.CR8
Reporter: Michal Linhard
Assignee: Manik Surtani
when trying to use tree API + indexing I get the following:
{code}
2011-07-29 13:09:46,909 0 INFO [org.infinispan.query.impl.LifecycleManager] (main:) ISPN014003: Registering Query interceptor
2011-07-29 13:09:46,930 21 INFO [org.hibernate.search.Version] (main:) Hibernate Search 3.4.0.Final
2011-07-29 13:09:46,942 33 INFO [org.hibernate.annotations.common.Version] (main:) Hibernate Commons Annotations 3.2.0.Final
2011-07-29 13:09:47,019 110 INFO [org.infinispan.factories.TransactionManagerFactory] (main:) Using a batchMode transaction manager
2011-07-29 13:09:47,194 285 INFO [org.infinispan.factories.GlobalComponentRegistry] (main:) ISPN000128: Infinispan version: Infinispan 'Pagoa' 5.0.0.CR8
2011-07-29 13:09:47,228 319 INFO [org.infinispan.factories.ComponentRegistry] (main:) ISPN000128: Infinispan version: Infinispan 'Pagoa' 5.0.0.CR8
2011-07-29 13:09:47,321 412 ERROR [org.infinispan.interceptors.InvocationContextInterceptor] (main:) ISPN000136: Execution error
java.lang.IllegalArgumentException: Indexing only works with entries keyed on Strings, primitives and classes that have the @Transformable annotation - you passed in a class org.infinispan.tree.NodeKey
at org.infinispan.query.backend.KeyTransformationHandler.keyToString(KeyTransformationHandler.java:149)
at org.infinispan.query.backend.QueryInterceptor.addToIndexes(QueryInterceptor.java:195)
at org.infinispan.query.backend.QueryInterceptor.visitPutKeyValueCommand(QueryInterceptor.java:103)
at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:119)
at org.infinispan.interceptors.LockingInterceptor.visitPutKeyValueCommand(LockingInterceptor.java:294)
at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:119)
at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:133)
at org.infinispan.commands.AbstractVisitor.visitPutKeyValueCommand(AbstractVisitor.java:60)
at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:119)
at org.infinispan.interceptors.TxInterceptor.enlistWriteAndInvokeNext(TxInterceptor.java:214)
at org.infinispan.interceptors.TxInterceptor.visitPutKeyValueCommand(TxInterceptor.java:162)
at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:119)
at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:104)
at org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:64)
at org.infinispan.commands.AbstractVisitor.visitPutKeyValueCommand(AbstractVisitor.java:60)
at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:119)
at org.infinispan.interceptors.BatchingInterceptor.handleDefault(BatchingInterceptor.java:77)
at org.infinispan.commands.AbstractVisitor.visitPutKeyValueCommand(AbstractVisitor.java:60)
at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77)
at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:274)
at org.infinispan.CacheImpl.putIfAbsent(CacheImpl.java:522)
at org.infinispan.CacheSupport.putIfAbsent(CacheSupport.java:63)
at org.infinispan.tree.CacheAdapter.putIfAbsent(CacheAdapter.java:322)
at org.infinispan.atomic.AtomicHashMap.newInstance(AtomicHashMap.java:76)
at org.infinispan.atomic.AtomicMapLookup.getAtomicMap(AtomicMapLookup.java:76)
at org.infinispan.atomic.AtomicMapLookup.getAtomicMap(AtomicMapLookup.java:57)
at org.infinispan.tree.TreeStructureSupport.getAtomicMap(TreeStructureSupport.java:127)
at org.infinispan.tree.TreeStructureSupport.createNodeInCache(TreeStructureSupport.java:78)
at org.infinispan.tree.TreeCacheImpl.createRoot(TreeCacheImpl.java:467)
at org.infinispan.tree.TreeCacheImpl.<init>(TreeCacheImpl.java:48)
at org.infinispan.tree.TreeCacheFactory.createTreeCache(TreeCacheFactory.java:59)
at org.jboss.test.TreeCacheExample.main(TreeCacheExample.java:36)
Exception in thread "main" org.infinispan.CacheException: Unable to end batch
at org.infinispan.batch.BatchContainer.endBatch(BatchContainer.java:111)
at org.infinispan.batch.AutoBatchSupport.endAtomic(AutoBatchSupport.java:49)
at org.infinispan.tree.TreeStructureSupport.createNodeInCache(TreeStructureSupport.java:84)
at org.infinispan.tree.TreeCacheImpl.createRoot(TreeCacheImpl.java:467)
at org.infinispan.tree.TreeCacheImpl.<init>(TreeCacheImpl.java:48)
at org.infinispan.tree.TreeCacheFactory.createTreeCache(TreeCacheFactory.java:59)
at org.jboss.test.TreeCacheExample.main(TreeCacheExample.java:36)
Caused by: javax.transaction.RollbackException: Transaction status is Status.STATUS_MARKED_ROLLBACK
at org.infinispan.transaction.tm.DummyBaseTransactionManager.commit(DummyBaseTransactionManager.java:95)
at org.infinispan.batch.BatchContainer.resolveTransaction(BatchContainer.java:131)
at org.infinispan.batch.BatchContainer.endBatch(BatchContainer.java:108)
... 6 more
{code}
test case attached as zipped maven project
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 2 months