[JBoss JIRA] (ISPN-4561) CacheManager.stop with indexing to Infinispan fails
by RH Bugzilla Integration (JIRA)
[ https://issues.jboss.org/browse/ISPN-4561?page=com.atlassian.jira.plugin.... ]
RH Bugzilla Integration updated ISPN-4561:
------------------------------------------
Bugzilla Update: Perform
Bugzilla References: https://bugzilla.redhat.com/show_bug.cgi?id=1167874
> CacheManager.stop with indexing to Infinispan fails
> ---------------------------------------------------
>
> Key: ISPN-4561
> URL: https://issues.jboss.org/browse/ISPN-4561
> Project: Infinispan
> Issue Type: Bug
> Components: Embedded Querying, Remote Querying
> Affects Versions: 6.0.2.Final, 7.0.0.Alpha5
> Reporter: Radim Vansa
> Assignee: Gustavo Fernandes
> Fix For: 7.0.0.CR1, 7.0.0.Final
>
>
> When I try to stop cache manager with cache that is configured like this:
> {code}
> <distributed-cache name="dist_lucene" owners="2" segments="512">
> <locking acquire-timeout="3000" concurrency-level="1000" />
> <transaction mode="NON_DURABLE_XA" locking="OPTIMISTIC"/>
> <indexing index="LOCAL">
> <property name="default.directory_provider">infinispan</property>
> <property name="default.indexmanager">org.infinispan.query.indexmanager.InfinispanIndexManager</property>
> <property name="default.exclusive_index_use">true</property>
> <property name="default.reader.strategy">shared</property>
> <property name="hibernate.search.lucene_version">LUCENE_48</property>
> </indexing>
> </distributed-cache>
> {code}
> during stop, another cache (containing the locks) is accessed, but this can be already stopped. Then, the cacheManager.stop() fails:
> {code}
> Caused by: java.lang.IllegalStateException: Cache 'LuceneIndexesLocking' is in 'TERMINATED' state and so it does not accept new invocations. Either restart it or recreate the cache container.
> at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:92)
> at org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:74)
> at org.infinispan.commands.AbstractVisitor.visitGetKeyValueCommand(AbstractVisitor.java:75)
> at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:44)
> at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:333)
> at org.infinispan.cache.impl.CacheImpl.get(CacheImpl.java:392)
> at org.infinispan.cache.impl.DecoratedCache.get(DecoratedCache.java:398)
> at org.infinispan.lucene.readlocks.DistributedSegmentReadLocker.deleteOrReleaseReadLock(DistributedSegmentReadLocker.java:74)
> at org.infinispan.lucene.impl.InfinispanIndexInput.close(InfinispanIndexInput.java:89)
> at org.apache.lucene.util.IOUtils.close(IOUtils.java:77)
> at org.apache.lucene.codecs.BlockTreeTermsReader.close(BlockTreeTermsReader.java:242)
> at org.apache.lucene.util.IOUtils.close(IOUtils.java:100)
> at org.apache.lucene.codecs.perfield.PerFieldPostingsFormat$FieldsReader.close(PerFieldPostingsFormat.java:227)
> at org.apache.lucene.util.IOUtils.close(IOUtils.java:77)
> at org.apache.lucene.index.SegmentCoreReaders.decRef(SegmentCoreReaders.java:178)
> at org.apache.lucene.index.SegmentReader.doClose(SegmentReader.java:260)
> at org.apache.lucene.index.IndexReader.decRef(IndexReader.java:243)
> at org.apache.lucene.index.StandardDirectoryReader.doClose(StandardDirectoryReader.java:362)
> at org.apache.lucene.index.IndexReader.decRef(IndexReader.java:243)
> at org.apache.lucene.index.IndexReader.close(IndexReader.java:479)
> at org.hibernate.search.indexes.impl.SharingBufferReaderProvider$ReaderUsagePair.close(SharingBufferReaderProvider.java:163)
> at org.hibernate.search.indexes.impl.SharingBufferReaderProvider.stop(SharingBufferReaderProvider.java:120)
> at org.hibernate.search.indexes.impl.DirectoryBasedIndexManager.destroy(DirectoryBasedIndexManager.java:74)
> at org.hibernate.search.indexes.impl.IndexManagerHolder.stop(IndexManagerHolder.java:197)
> at org.hibernate.search.impl.ImmutableSearchFactory.close(ImmutableSearchFactory.java:169)
> at org.hibernate.search.impl.MutableSearchFactory.close(MutableSearchFactory.java:127)
> at org.infinispan.query.impl.LifecycleManager.cacheStopped(LifecycleManager.java:278)
> at org.infinispan.factories.ComponentRegistry.stop(ComponentRegistry.java:244)
> at org.infinispan.cache.impl.CacheImpl.stop(CacheImpl.java:774)
> at org.infinispan.cache.impl.CacheImpl.stop(CacheImpl.java:769)
> at org.infinispan.manager.DefaultCacheManager.stop(DefaultCacheManager.java:630)
> ... 4 more
> Suppressed: java.lang.IllegalStateException: Cache 'LuceneIndexesLocking' is in 'TERMINATED' state and so it does not accept new invocations. Either restart it or recreate the cache container.
> at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:92)
> at org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:74)
> at org.infinispan.commands.AbstractVisitor.visitGetKeyValueCommand(AbstractVisitor.java:75)
> at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:44)
> at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:333)
> at org.infinispan.cache.impl.CacheImpl.get(CacheImpl.java:392)
> at org.infinispan.cache.impl.DecoratedCache.get(DecoratedCache.java:398)
> at org.infinispan.lucene.readlocks.DistributedSegmentReadLocker.deleteOrReleaseReadLock(DistributedSegmentReadLocker.java:74)
> at org.infinispan.lucene.impl.InfinispanIndexInput.close(InfinispanIndexInput.java:89)
> at org.apache.lucene.util.IOUtils.close(IOUtils.java:77)
> at org.apache.lucene.codecs.lucene41.Lucene41PostingsReader.close(Lucene41PostingsReader.java:145)
> ... 29 more
> Suppressed: java.lang.IllegalStateException: Cache 'LuceneIndexesLocking' is in 'TERMINATED' state and so it does not accept new invocations. Either restart it or recreate the cache container.
> ... 40 more
> Suppressed: java.lang.IllegalStateException: Cache 'LuceneIndexesLocking' is in 'TERMINATED' state and so it does not accept new invocations. Either restart it or recreate the cache container.
> at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:92)
> at org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:74)
> at org.infinispan.commands.AbstractVisitor.visitGetKeyValueCommand(AbstractVisitor.java:75)
> at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:44)
> at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:333)
> at org.infinispan.cache.impl.CacheImpl.get(CacheImpl.java:392)
> at org.infinispan.cache.impl.DecoratedCache.get(DecoratedCache.java:398)
> at org.infinispan.lucene.readlocks.DistributedSegmentReadLocker.deleteOrReleaseReadLock(DistributedSegmentReadLocker.java:74)
> at org.infinispan.lucene.impl.InfinispanIndexInput.close(InfinispanIndexInput.java:89)
> at org.apache.lucene.util.IOUtils.close(IOUtils.java:77)
> at org.apache.lucene.codecs.compressing.CompressingStoredFieldsReader.close(CompressingStoredFieldsReader.java:181)
> ... 25 more
> Suppressed: java.lang.IllegalStateException: Cache 'LuceneIndexesLocking' is in 'TERMINATED' state and so it does not accept new invocations. Either restart it or recreate the cache container.
> at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:92)
> at org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:74)
> at org.infinispan.commands.AbstractVisitor.visitGetKeyValueCommand(AbstractVisitor.java:75)
> at org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:44)
> at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:333)
> at org.infinispan.cache.impl.CacheImpl.get(CacheImpl.java:392)
> at org.infinispan.cache.impl.DecoratedCache.get(DecoratedCache.java:398)
> at org.infinispan.lucene.readlocks.DistributedSegmentReadLocker.deleteOrReleaseReadLock(DistributedSegmentReadLocker.java:74)
> at org.infinispan.lucene.impl.InfinispanIndexInput.close(InfinispanIndexInput.java:89)
> at org.apache.lucene.codecs.lucene42.Lucene42DocValuesProducer.close(Lucene42DocValuesProducer.java:489)
> ... 25 more
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.8#6338)
10 years, 1 month
[JBoss JIRA] (ISPN-5016) Specify and document cache consistency guarantees
by Dan Berindei (JIRA)
[ https://issues.jboss.org/browse/ISPN-5016?page=com.atlassian.jira.plugin.... ]
Dan Berindei updated ISPN-5016:
-------------------------------
Status: Open (was: New)
> Specify and document cache consistency guarantees
> -------------------------------------------------
>
> Key: ISPN-5016
> URL: https://issues.jboss.org/browse/ISPN-5016
> Project: Infinispan
> Issue Type: Task
> Components: Documentation-Core
> Affects Versions: 7.0.2.Final
> Reporter: Radim Vansa
> Priority: Critical
>
> We can't simply use the consistency model defined by Java Specification and broaden it for whole cache (maybe the expression "can't" is too strong, but we definitely don't want to do that in some cases).
> By consistency guarantees/model I mean mostly in which order are
> writes allowed to be observed: and we can't boil it down to simply
> causal, PRAM or any other consistency model as writes can be observed as non-atomic in Infinispan.
> Infinispan documentation is quite scarce about that, the only trace I've
> found is in Glossarry [2] "Infinispan has traditionally followed ACID
> principles as far as possible, however an eventually consistent mode
> embracing BASE is on the roadmap."
--
This message was sent by Atlassian JIRA
(v6.3.8#6338)
10 years, 1 month
[JBoss JIRA] (ISPN-5016) Specify and document cache consistency guarantees
by Dan Berindei (JIRA)
[ https://issues.jboss.org/browse/ISPN-5016?page=com.atlassian.jira.plugin.... ]
Dan Berindei reassigned ISPN-5016:
----------------------------------
Assignee: Dan Berindei
> Specify and document cache consistency guarantees
> -------------------------------------------------
>
> Key: ISPN-5016
> URL: https://issues.jboss.org/browse/ISPN-5016
> Project: Infinispan
> Issue Type: Task
> Components: Documentation-Core
> Affects Versions: 7.0.2.Final
> Reporter: Radim Vansa
> Assignee: Dan Berindei
> Priority: Critical
>
> We can't simply use the consistency model defined by Java Specification and broaden it for whole cache (maybe the expression "can't" is too strong, but we definitely don't want to do that in some cases).
> By consistency guarantees/model I mean mostly in which order are
> writes allowed to be observed: and we can't boil it down to simply
> causal, PRAM or any other consistency model as writes can be observed as non-atomic in Infinispan.
> Infinispan documentation is quite scarce about that, the only trace I've
> found is in Glossarry [2] "Infinispan has traditionally followed ACID
> principles as far as possible, however an eventually consistent mode
> embracing BASE is on the roadmap."
--
This message was sent by Atlassian JIRA
(v6.3.8#6338)
10 years, 1 month
[JBoss JIRA] (ISPN-4708) Make DirectoryImplementor#deleteFile apply changes asynchronously
by RH Bugzilla Integration (JIRA)
[ https://issues.jboss.org/browse/ISPN-4708?page=com.atlassian.jira.plugin.... ]
RH Bugzilla Integration commented on ISPN-4708:
-----------------------------------------------
Sebastian Łaskawiec <slaskawi(a)redhat.com> changed the Status of [bug 1167469|https://bugzilla.redhat.com/show_bug.cgi?id=1167469] from NEW to MODIFIED
> Make DirectoryImplementor#deleteFile apply changes asynchronously
> -----------------------------------------------------------------
>
> Key: ISPN-4708
> URL: https://issues.jboss.org/browse/ISPN-4708
> Project: Infinispan
> Issue Type: Enhancement
> Components: Lucene Directory
> Reporter: Sanne Grinovero
> Assignee: Gustavo Fernandes
> Fix For: 7.0.0.CR2
>
>
> Looks like the {{deleteFile}} operation is the main responsible component for the latency generated by writing to the Lucene Directory, but this operation could be processed asynchronously by a background thread.
> Configurtion API {{org.infinispan.lucene.directory.BuildContext}} could allow for an optional Executor to be passed for this purpose, and if there isn't we keep current behaviour for running it synchronously.
> The tricky part I guess is making sure that the tests, which verify written consistency -including delete operations - are refactored to be able to deal with the fact that delete operations will happen eventually.
--
This message was sent by Atlassian JIRA
(v6.3.8#6338)
10 years, 1 month