[JBoss JIRA] (ISPN-3818) Cache the topology information sent to clients
by Dan Berindei (JIRA)
[ https://issues.jboss.org/browse/ISPN-3818?page=com.atlassian.jira.plugin.... ]
Dan Berindei resolved ISPN-3818.
--------------------------------
Fix Version/s: 7.0.0.Final
Resolution: Out of Date
No longer relevant since ISPN-3529 was fixed.
> Cache the topology information sent to clients
> ----------------------------------------------
>
> Key: ISPN-3818
> URL: https://issues.jboss.org/browse/ISPN-3818
> Project: Infinispan
> Issue Type: Enhancement
> Components: Remote Protocols
> Affects Versions: 6.0.0.Final
> Reporter: Radim Vansa
> Assignee: Galder Zamarreño
> Fix For: 7.0.0.Final
>
>
> Currently the server searches for denormalized hash ids for each client after topology change / new client joining.
> This is pretty expensive operation as it results in calling the hash algorithm several hundred thousand times, and this for each client.
> The result of this operation should be cached.
--
This message was sent by Atlassian JIRA
(v6.3.8#6338)
10 years, 1 month
[JBoss JIRA] (ISPN-2538) Endless loop in TreeMap.remove at shutdown of query-enabled cache
by RH Bugzilla Integration (JIRA)
[ https://issues.jboss.org/browse/ISPN-2538?page=com.atlassian.jira.plugin.... ]
RH Bugzilla Integration commented on ISPN-2538:
-----------------------------------------------
Sebastian Łaskawiec <slaskawi(a)redhat.com> changed the Status of [bug 1167874|https://bugzilla.redhat.com/show_bug.cgi?id=1167874] from NEW to MODIFIED
> Endless loop in TreeMap.remove at shutdown of query-enabled cache
> -----------------------------------------------------------------
>
> Key: ISPN-2538
> URL: https://issues.jboss.org/browse/ISPN-2538
> Project: Infinispan
> Issue Type: Bug
> Components: Embedded Querying
> Affects Versions: 5.2.0.Beta4
> Reporter: Marko Lukša
> Assignee: William Burns
> Fix For: 7.0.0.Beta2
>
>
> {code}
> "MSC service thread 1-6" prio=6 tid=0x000000000d5b9000 nid=0x10a0 runnable [0x000000000e45e000]
> java.lang.Thread.State: RUNNABLE
> at java.util.TreeMap.fixAfterDeletion(TreeMap.java:2215)
> at java.util.TreeMap.deleteEntry(TreeMap.java:2173)
> at java.util.TreeMap.remove(TreeMap.java:600)
> at org.infinispan.query.impl.LifecycleManager.cacheStopped(LifecycleManager.java:181)
> at org.infinispan.factories.ComponentRegistry.stop(ComponentRegistry.java:227)
> at org.infinispan.CacheImpl.stop(CacheImpl.java:540)
> at org.infinispan.CacheImpl.stop(CacheImpl.java:535)
> at org.infinispan.AbstractDelegatingCache.stop(AbstractDelegatingCache.java:348)
> at org.jboss.as.capedwarf.services.CacheLifecycleService.stop(CacheLifecycleService.java:94)
> at org.jboss.msc.service.ServiceControllerImpl$StopTask.stopService(ServiceControllerImpl.java:1911)
> at org.jboss.msc.service.ServiceControllerImpl$StopTask.run(ServiceControllerImpl.java:1874)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
> at java.lang.Thread.run(Thread.java:722)
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.8#6338)
10 years, 1 month
[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 commented on ISPN-4561:
-----------------------------------------------
Sebastian Łaskawiec <slaskawi(a)redhat.com> changed the Status of [bug 1167874|https://bugzilla.redhat.com/show_bug.cgi?id=1167874] from NEW to MODIFIED
> 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 RH Bugzilla Integration (JIRA)
[ https://issues.jboss.org/browse/ISPN-5016?page=com.atlassian.jira.plugin.... ]
RH Bugzilla Integration commented on ISPN-5016:
-----------------------------------------------
Misha H. Ali <mhusnain(a)redhat.com> changed the Status of [bug 1167780|https://bugzilla.redhat.com/show_bug.cgi?id=1167780] from NEW to ASSIGNED
> 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-4995) ClusteredGet served for non-member of CH
by RH Bugzilla Integration (JIRA)
[ https://issues.jboss.org/browse/ISPN-4995?page=com.atlassian.jira.plugin.... ]
RH Bugzilla Integration commented on ISPN-4995:
-----------------------------------------------
Misha H. Ali <mhusnain(a)redhat.com> changed the Status of [bug 1167780|https://bugzilla.redhat.com/show_bug.cgi?id=1167780] from NEW to ASSIGNED
> ClusteredGet served for non-member of CH
> ----------------------------------------
>
> Key: ISPN-4995
> URL: https://issues.jboss.org/browse/ISPN-4995
> Project: Infinispan
> Issue Type: Bug
> Components: Core, State Transfer
> Reporter: Radim Vansa
> Priority: Critical
>
> When nodes accept ClusteredGetCommand from node that is not member of CH, it can happen that when one thread does
> {code}
> put(K1, V1);
> put(K2, V2)
> {code}
> and another gets
> {code}
> get(K2) -> V2
> get(K1) -> V0 (some old value)
> {code}
> edg-perf01, 02 and 03 share this view and topology:
> {code}
> 04:40:08,714 TRACE [org.jgroups.protocols.FD_SOCK] (INT-8,edg-perf01-63779) edg-perf01-63779: i-have-sock: edg-perf02-45117 --> 172.18.1.3:37476 (cache is {edg-perf01-63779=172.18.1.1:40099, edg-perf02-45117=172.18.1.3:37476})
> 04:40:08,715 TRACE [org.infinispan.topology.ClusterTopologyManagerImpl] (transport-thread--p2-t6) Received new cluster view: 8, isCoordinator = true, becameCoordinator = false
> 04:40:11,203 DEBUG [org.infinispan.topology.LocalTopologyManagerImpl] (transport-thread--p2-t1) Updating local consistent hash(es) for cache testCache: new topology = CacheTopology{id=16, rebalanceId=4, currentC
> H=DefaultConsistentHash{ns = 512, owners = (3)[edg-perf02-45117: 171+170, edg-perf03-6264: 171+171, edg-perf01-63779: 170+171]}, pendingCH=null, unionCH=null, actualMembers=[edg-perf02-45117, edg-perf03-6264, edg-perf01-63779]}
> {code}
> Later, edg-perf02 and edg-perf03 get new view and install a new topology, where edg-perf01 does not exist:
> {code}
> 04:41:13,681 INFO [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (Incoming-2,edg-perf03-6264) ISPN000093: Received new, MERGED cluster view for channel default: MergeView::[edg-perf02-45117|9] (3) [edg-perf02-45117, edg-perf03-6264, edg-perf04-10989], 1 subgroups: [edg-perf04-10989|7] (1) [edg-perf04-10989]
> 04:41:13,681 TRACE [org.infinispan.topology.ClusterTopologyManagerImpl] (transport-thread--p2-t22) Received new cluster view: 9, isCoordinator = false, becameCoordinator = false
> 04:41:13,760 TRACE [org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher] (remote-thread--p3-t32) Attempting to execute non-CacheRpcCommand command: CacheTopologyControlCommand{cache=testCache, type=CH_UPDATE, sender=edg-perf02-45117, joinInfo=null, topologyId=18, rebalanceId=4, currentCH=DefaultConsistentHash{ns = 512, owners = (2)[edg-perf02-45117: 256+85, edg-perf03-6264: 256+86]}, pendingCH=null, availabilityMode=AVAILABLE, actualMembers=[edg-perf02-45117, edg-perf03-6264], throwable=null, viewId=9}[sender=edg-perf02-45117]
> {code}
> After that, edg-perf04 writes to {{key_00000000000020DB}} which is currently owned only by edg-perf03 - this key servers as K1 in example above. It is not backed up to edg-perf01, but edg-perf01 still thinks it's an owner of this key as it did not get any new view (this is a log from edg-perf03) :
> {code}
> 04:41:30,884 TRACE [org.infinispan.remoting.rpc.RpcManagerImpl] (remote-thread--p3-t45) edg-perf03-6264 invoking PutKeyValueCommand{key=key_00000000000020DB, value=[33 #4: 0, 169, 284, 634, ], flags=[SKIP_CACHE_LOAD, SKIP_REMOTE_LOOKUP], putIfAbsent=false, valueMatcher=MATCH_ALWAYS, metadata=EmbeddedMetadata{version=null}, successful=true} to recipient list [edg-perf03-6264] with options RpcOptions{timeout=60000, unit=MILLISECONDS, fifoOrder=true, totalOrder=false, responseFilter=null, responseMode=SYNCHRONOUS, skipReplicationQueue=false}
> {code}
> Later, edg-perf04 writes to another key {{stressor_33}} (K2 in the example) value with operationId=650 (previous value is 600) which is replicated to edg-perf02 and edg-perf03.
> Now a merge view with all 4 nodes is installed:
> {code}
> 04:41:31,258 INFO [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (Incoming-2,edg-perf01-63779) ISPN000093: Received new, MERGED cluster view for channel default: MergeView::[edg-perf01-63779|10] (4) [edg-perf01-63779, edg-perf03-6264, edg-perf02-45117, edg-perf04-10989], 6 subgroups: [edg-perf02-45117|7] (2) [edg-perf02-45117, edg-perf03-6264], [edg-perf01-63779|4] (2) [edg-perf01-63779, edg-perf02-45117], [edg-perf02-45117|9] (3) [edg-perf02-45117, edg-perf03-6264, edg-perf04-10989], [edg-perf03-6264|4] (2) [edg-perf03-6264, edg-perf04-10989], [edg-perf01-63779|8] (3) [edg-perf01-63779, edg-perf02-45117, edg-perf03-6264], [edg-perf01-63779|6] (1) [edg-perf01-63779]
> 04:41:31,258 TRACE [org.infinispan.topology.ClusterTopologyManagerImpl] (transport-thread--p2-t2) Received new cluster view: 10, isCoordinator = true, becameCoordinator = false
> {code}
> edg-perf01 now issues a remote get to edg-perf02 for key stressor_33 and receives the correct answer (operationId=650):
> {code}
> 04:41:32,494 TRACE [org.infinispan.remoting.rpc.RpcManagerImpl] (BackgroundOps-Checker-1) Response(s) to ClusteredGetCommand{key=stressor_33, flags=null} is {edg-perf02-45117=SuccessfulResponse{responseValue=ImmortalCacheValue {value=LastOperation{operationId=650, seed=0000A15A4C2DD25A}}} }
> {code}
> However, when edg-perf01 reads {{key_00000000000020DB}}, it loads the old value from local data container as no CH update/rebalance happened so far:
> {code}
> 04:41:32,496 TRACE [org.infinispan.partitionhandling.impl.PartitionHandlingManagerImpl] (BackgroundOps-Checker-1) Checking availability for key=key_00000000000020DB, status=AVAILABLE
> 04:41:32,497 ERROR [org.radargun.stages.cache.background.LogChecker] (BackgroundOps-Checker-1) Missing operation 634 for thread 33 on key 8411 (key_00000000000020DB)
> 04:41:32,499 DEBUG [org.radargun.service.InfinispanDebugable] (BackgroundOps-Checker-1) Debug info for key testCache key_00000000000020DB: owners=edg-perf01-63779, edg-perf03-6264, local=true, uncertain=false, container.key_00000000000020DB=ImmortalCacheEntry[key=key_00000000000020DB, value=[33 #3: 0, 169, 284, ], created=-1, isCreated=false, lastUsed=-1, isChanged=false, expires=-1, isExpired=false, canExpire=false, isEvicted=true, isRemoved=false, isValid=false, lifespan=-1, maxIdle=-1], segmentId=173
> {code}
> Note that this was found on branch https://github.com/infinispan/infinispan/pull/3062/files trying to fix ISPN-4949.
--
This message was sent by Atlassian JIRA
(v6.3.8#6338)
10 years, 1 month