[Red Hat JIRA] (ISPN-12430) AsyncNonBlockingStore can have many more modifications than modification queue size
by Tristan Tarrant (Jira)
[ https://issues.redhat.com/browse/ISPN-12430?page=com.atlassian.jira.plugi... ]
Tristan Tarrant updated ISPN-12430:
-----------------------------------
Fix Version/s: 12.0.0.Final
(was: 12.0.0.CR1)
> AsyncNonBlockingStore can have many more modifications than modification queue size
> -----------------------------------------------------------------------------------
>
> Key: ISPN-12430
> URL: https://issues.redhat.com/browse/ISPN-12430
> Project: Infinispan
> Issue Type: Bug
> Components: Loaders and Stores
> Reporter: Will Burns
> Assignee: Will Burns
> Priority: Major
> Fix For: 12.0.0.Final
>
>
> The AsyncNonBlockingStore is known to allow for concurrent writes more than modification queue size. Unfortunately, due to how synchronized Publisher works it can be much much more if a given thread is delayed as other threads can sneak in. For example in the stress test with 1024 modification queue size I could get 6K entries in a given queue. The problem is that the concurrent publisher would add the value to its own queue which was only processed on the first thread, which means many could sneak in as no changes were actually populated in the map. https://github.com/ReactiveX/RxJava/blob/3.x/src/main/java/io/reactivex/r...
>
> We should change this to be a bit more strict and limit the writes to only queue + # of threads with concurrent modifications.
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
5 years
[Red Hat JIRA] (ISPN-12489) Non-transactional INVALIDATION_SYNC cache deadlock
by Tristan Tarrant (Jira)
[ https://issues.redhat.com/browse/ISPN-12489?page=com.atlassian.jira.plugi... ]
Tristan Tarrant updated ISPN-12489:
-----------------------------------
Fix Version/s: (was: 12.0.0.CR1)
> Non-transactional INVALIDATION_SYNC cache deadlock
> --------------------------------------------------
>
> Key: ISPN-12489
> URL: https://issues.redhat.com/browse/ISPN-12489
> Project: Infinispan
> Issue Type: Bug
> Components: Core
> Affects Versions: 10.1.8.Final, 11.0.5.Final, 12.0.0.Dev06
> Reporter: Dan Berindei
> Assignee: Dan Berindei
> Priority: Major
> Fix For: 12.0.0.Final
>
>
> Non-transactional invalidation caches use the old locking scheme from Infinispan 4.x, which is prone to deadlocks:
> # {{put(k, v1)}} is invoked on node A and acquires lock {{k}}
> # {{put(k, v2)}} is invoked on node B and acquires lock {{k}}
> # {{A}} sends an {{InvalidateCommand(k)}} RPC to {{B}}
> # {{B}} sends an {{InvalidateCommand(k)}} RPC to {{A}}
> # The {{InvalidateCommand(k)}} from {{A}} and tries to acquire lock {{k}} on {{B}}
> # The {{InvalidateCommand(k)}} from {{B}} and tries to acquire lock {{k}} on {{A}}
> # Both {{InvalidateCommand(k)}} lock acquisitions eventually time out and release lock {{k}} on their originators.
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
5 years
[Red Hat JIRA] (ISPN-12548) Replicated cache get ignores value in zero-capacity nodes
by Tristan Tarrant (Jira)
[ https://issues.redhat.com/browse/ISPN-12548?page=com.atlassian.jira.plugi... ]
Tristan Tarrant updated ISPN-12548:
-----------------------------------
Fix Version/s: 12.0.0.Final
(was: 12.0.0.CR1)
> Replicated cache get ignores value in zero-capacity nodes
> ---------------------------------------------------------
>
> Key: ISPN-12548
> URL: https://issues.redhat.com/browse/ISPN-12548
> Project: Infinispan
> Issue Type: Bug
> Components: Core
> Affects Versions: 12.0.0.Dev07
> Reporter: Dan Berindei
> Assignee: Dan Berindei
> Priority: Major
> Fix For: 12.0.0.Final
>
>
> In replicated caches that meet several other conditions, {{cache.get(key)}} is optimized to skip the interceptor chain and to read the entry directly from the data container.
> This optimization assumes that the local cache has all the values, and the assumption fails when the local node has a zero capacity factor.
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
5 years
[Red Hat JIRA] (ISPN-12531) Support JGroups fix start port and port offset in the server for FD_SOCK
by Tristan Tarrant (Jira)
[ https://issues.redhat.com/browse/ISPN-12531?page=com.atlassian.jira.plugi... ]
Tristan Tarrant updated ISPN-12531:
-----------------------------------
Fix Version/s: 12.0.0.Final
(was: 12.0.0.CR1)
> Support JGroups fix start port and port offset in the server for FD_SOCK
> ------------------------------------------------------------------------
>
> Key: ISPN-12531
> URL: https://issues.redhat.com/browse/ISPN-12531
> Project: Infinispan
> Issue Type: Enhancement
> Components: Server
> Affects Versions: 11.0.5.Final, 12.0.0.Dev06
> Reporter: Wolf-Dieter Fink
> Assignee: Tristan Tarrant
> Priority: Minor
> Fix For: 12.0.0.Final
>
>
> As the server parameter '-o' can add a port offset to the jgroups.bind.port the FD_SOCK port is not affected. Also the port is configured as random which is not ideal.
> The legacy server used the socket-bindings to use a fixed start port (udp-fd=54200 and tcp-fd=57800) and incremented the port if the port-offset was used.
> This should be similar for the new jgroups configuration.
>
>
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
5 years
[Red Hat JIRA] (ISPN-12592) Improve error message when XML element is removed
by Tristan Tarrant (Jira)
[ https://issues.redhat.com/browse/ISPN-12592?page=com.atlassian.jira.plugi... ]
Tristan Tarrant updated ISPN-12592:
-----------------------------------
Fix Version/s: 12.0.0.Final
(was: 12.0.0.CR1)
> Improve error message when XML element is removed
> -------------------------------------------------
>
> Key: ISPN-12592
> URL: https://issues.redhat.com/browse/ISPN-12592
> Project: Infinispan
> Issue Type: Enhancement
> Components: Configuration, Core
> Affects Versions: 12.0.0.Dev07
> Reporter: Dan Berindei
> Assignee: Dan Berindei
> Priority: Major
> Fix For: 12.0.0.Final
>
>
> When an element is removed from the XML configuration schema, configurations using the old XML namespace trigger a warning that the element is deprecated, including the name of the replacement element.
> Configurations files with no namespace declarations are assumed to be using the latest schema and don't trigger the warning, instead they trigger a generic `Unexpected element 'X' encountered` exception.
> Assuming the latest schema is the right thing to do, but we need to improve the error message for upgraders.
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
5 years
[Red Hat JIRA] (ISPN-12572) OverlayLocalConfigurationStorage.persistConfigurations should be synchronized
by Tristan Tarrant (Jira)
[ https://issues.redhat.com/browse/ISPN-12572?page=com.atlassian.jira.plugi... ]
Tristan Tarrant updated ISPN-12572:
-----------------------------------
Fix Version/s: 12.0.0.Final
(was: 12.0.0.CR1)
> OverlayLocalConfigurationStorage.persistConfigurations should be synchronized
> -----------------------------------------------------------------------------
>
> Key: ISPN-12572
> URL: https://issues.redhat.com/browse/ISPN-12572
> Project: Infinispan
> Issue Type: Bug
> Components: Core
> Affects Versions: 12.0.0.Dev07
> Reporter: Dan Berindei
> Assignee: Dan Berindei
> Priority: Major
> Fix For: 12.0.0.Final
>
>
> {{OverlayLocalConfigurationStorage.persistConfigurations}} uses {{FileChannel.lock()}} to serialize access to the {{caches.xml}} or {{templates.xml}} files.
> But {{FileChannel.lock()}} assumes that a single thread in the JVM is locking the file, otherwise it throws an exception:
> {noformat}
> 2020-12-10 08:33:50,422 FATAL (main) [org.infinispan.SERVER] ISPN080028: Infinispan Server failed to start java.util.concurrent.ExecutionException: org.infinispan.manager.EmbeddedCacheManagerStartupException: org.infinispan.commons.CacheConfigurationException: Error starting component org.infinispan.globalstate.GlobalConfigurationManager
> at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:395)
> at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1999)
> at org.infinispan.server.Bootstrap.runInternal(Bootstrap.java:158)
> at org.infinispan.server.tool.Main.run(Main.java:98)
> at org.infinispan.server.Bootstrap.main(Bootstrap.java:46)
> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.base/java.lang.reflect.Method.invoke(Method.java:566)
> at org.infinispan.server.loader.Loader.run(Loader.java:103)
> at org.infinispan.server.loader.Loader.main(Loader.java:48)
> Caused by: org.infinispan.manager.EmbeddedCacheManagerStartupException: org.infinispan.commons.CacheConfigurationException: Error starting component org.infinispan.globalstate.GlobalConfigurationManager
> at org.infinispan.manager.DefaultCacheManager.internalStart(DefaultCacheManager.java:751)
> at org.infinispan.manager.DefaultCacheManager.start(DefaultCacheManager.java:717)
> at org.infinispan.server.SecurityActions.lambda$startCacheManager$1(SecurityActions.java:67)
> at org.infinispan.security.Security.doPrivileged(Security.java:45)
> at org.infinispan.server.SecurityActions.doPrivileged(SecurityActions.java:39)
> at org.infinispan.server.SecurityActions.startCacheManager(SecurityActions.java:70)
> at org.infinispan.server.Server.run(Server.java:346)
> ... 9 more
> Caused by: org.infinispan.commons.CacheConfigurationException: Error starting component org.infinispan.globalstate.GlobalConfigurationManager
> at org.infinispan.factories.impl.BasicComponentRegistryImpl.startWrapper(BasicComponentRegistryImpl.java:572)
> at org.infinispan.factories.impl.BasicComponentRegistryImpl.access$700(BasicComponentRegistryImpl.java:30)
> at org.infinispan.factories.impl.BasicComponentRegistryImpl$ComponentWrapper.running(BasicComponentRegistryImpl.java:787)
> at org.infinispan.factories.AbstractComponentRegistry.internalStart(AbstractComponentRegistry.java:341)
> at org.infinispan.factories.AbstractComponentRegistry.start(AbstractComponentRegistry.java:237)
> at org.infinispan.manager.DefaultCacheManager.internalStart(DefaultCacheManager.java:746)
> ... 15 more
> Caused by: java.util.concurrent.CompletionException: org.infinispan.commons.CacheConfigurationException: ISPN000502: Error while persisting global configuration state
> at org.infinispan.util.concurrent.CompletionStages.join(CompletionStages.java:81)
> at org.infinispan.globalstate.impl.GlobalConfigurationManagerImpl.lambda$start$0(GlobalConfigurationManagerImpl.java:115)
> at org.infinispan.cache.impl.EncoderCache.lambda$forEach$7(EncoderCache.java:762)
> at java.base/java.util.concurrent.ConcurrentMap.forEach(ConcurrentMap.java:122)
> at org.infinispan.cache.impl.AbstractDelegatingCache.forEach(AbstractDelegatingCache.java:479)
> at org.infinispan.cache.impl.AbstractDelegatingCache.forEach(AbstractDelegatingCache.java:479)
> at org.infinispan.cache.impl.AbstractDelegatingCache.forEach(AbstractDelegatingCache.java:479)
> at org.infinispan.cache.impl.EncoderCache.forEach(EncoderCache.java:759)
> at org.infinispan.globalstate.impl.GlobalConfigurationManagerImpl.start(GlobalConfigurationManagerImpl.java:106)
> at org.infinispan.globalstate.impl.CorePackageImpl$2.start(CorePackageImpl.java:59)
> at org.infinispan.globalstate.impl.CorePackageImpl$2.start(CorePackageImpl.java:48)
> at org.infinispan.factories.impl.BasicComponentRegistryImpl.invokeStart(BasicComponentRegistryImpl.java:604)
> at org.infinispan.factories.impl.BasicComponentRegistryImpl.doStartWrapper(BasicComponentRegistryImpl.java:595)
> at org.infinispan.factories.impl.BasicComponentRegistryImpl.startWrapper(BasicComponentRegistryImpl.java:564)
> ... 20 more
> Caused by: org.infinispan.commons.CacheConfigurationException: ISPN000502: Error while persisting global configuration state
> at org.infinispan.globalstate.impl.OverlayLocalConfigurationStorage.persistConfigurations(OverlayLocalConfigurationStorage.java:156)
> at org.infinispan.globalstate.impl.OverlayLocalConfigurationStorage.storeCaches(OverlayLocalConfigurationStorage.java:130)
> at org.infinispan.globalstate.impl.OverlayLocalConfigurationStorage.lambda$createCache$2(OverlayLocalConfigurationStorage.java:79)
> at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:642)
> at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
> at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
> at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982)
> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
> at java.base/java.lang.Thread.run(Thread.java:834)
> Caused by: org.infinispan.commons.CacheConfigurationException: ISPN000508: Cannot rename file /home/infinispan/workspace/Infinispan_PR-8921/jcache/tck-runner-remote/target/infinispan-server/server/data/caches9096240479751965790.tmp to /home/infinispan/workspace/Infinispan_PR-8921/jcache/tck-runner-remote/target/infinispan-server/server/data/caches.xml
> at org.infinispan.globalstate.impl.OverlayLocalConfigurationStorage.persistConfigurations(OverlayLocalConfigurationStorage.java:153)
> ... 9 more
> Caused by: java.nio.channels.OverlappingFileLockException
> at java.base/sun.nio.ch.FileLockTable.checkList(FileLockTable.java:229)
> at java.base/sun.nio.ch.FileLockTable.add(FileLockTable.java:123)
> at java.base/sun.nio.ch.FileChannelImpl.lock(FileChannelImpl.java:1109)
> at java.base/java.nio.channels.FileChannel.lock(FileChannel.java:1063)
> at org.infinispan.commons.util.Util.renameTempFile(Util.java:1087)
> at org.infinispan.globalstate.impl.OverlayLocalConfigurationStorage.persistConfigurations(OverlayLocalConfigurationStorage.java:151)
> ... 9 more
> {noformat}
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
5 years