[JBoss JIRA] (ISPN-11731) Add blockhound to query module
by Will Burns (Jira)
Will Burns created ISPN-11731:
---------------------------------
Summary: Add blockhound to query module
Key: ISPN-11731
URL: https://issues.redhat.com/browse/ISPN-11731
Project: Infinispan
Issue Type: Enhancement
Reporter: Will Burns
Assignee: Will Burns
Fix For: 11.0.0.Dev05
We need to make sure that various parts of the query module do not run blocking code in non blocking threads. We should add blockhound and make sure to fix all violations by running on the blocking thread or appropriately.
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
4 years
[JBoss JIRA] (ISPN-11524) PersistenceManagerImpl locks should be able to block
by Dan Berindei (Jira)
[ https://issues.redhat.com/browse/ISPN-11524?page=com.atlassian.jira.plugi... ]
Dan Berindei updated ISPN-11524:
--------------------------------
Status: Resolved (was: Pull Request Sent)
Fix Version/s: 11.0.0.Dev05
Resolution: Done
> PersistenceManagerImpl locks should be able to block
> ----------------------------------------------------
>
> Key: ISPN-11524
> URL: https://issues.redhat.com/browse/ISPN-11524
> Project: Infinispan
> Issue Type: Sub-task
> Reporter: Will Burns
> Priority: Major
> Fix For: 11.0.0.Dev05
>
>
> Here is an example stack trace acquired
> {code}
> java.lang.AssertionError: Blocking call! jdk.internal.misc.Unsafe#park on thread Thread[non-blocking-thread-SharedStoreTest-NodeB-p19754-t5,5,main]
> at org.infinispan.util.CoreTestBlockHoundIntegration.lambda$applyTo$0(CoreTestBlockHoundIntegration.java:43)
> at reactor.blockhound.BlockHound$Builder.lambda$install$6(BlockHound.java:318)
> at reactor.blockhound.BlockHoundRuntime.checkBlocking(BlockHoundRuntime.java:46)
> at java.base/jdk.internal.misc.Unsafe.park(Unsafe.java)
> at java.base/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
> at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:885)
> at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:1009)
> at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1324)
> at java.base/java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:738)
> at org.infinispan.persistence.manager.PersistenceManagerImpl.getFirstSegmentedStore(PersistenceManagerImpl.java:665)
> at org.infinispan.persistence.manager.PersistenceManagerImpl.publishEntries(PersistenceManagerImpl.java:704)
> at org.infinispan.persistence.manager.PersistenceManagerImpl.publishEntries(PersistenceManagerImpl.java:121)
> at org.infinispan.statetransfer.StateProviderImpl.publishStoreEntries(StateProviderImpl.java:307)
> at org.infinispan.scattered.impl.ScatteredStateProviderImpl.replicateAndInvalidate(ScatteredStateProviderImpl.java:94)
> at org.infinispan.scattered.impl.ScatteredStateProviderImpl.onTopologyUpdate(ScatteredStateProviderImpl.java:53)
> at org.infinispan.statetransfer.StateTransferManagerImpl.updateProviderAndConsumer(StateTransferManagerImpl.java:202)
> at org.infinispan.statetransfer.StateTransferManagerImpl.lambda$doTopologyUpdate$0(StateTransferManagerImpl.java:188)
> at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1106)
> at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2235)
> at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:143)
> at org.infinispan.statetransfer.StateTransferManagerImpl.doTopologyUpdate(StateTransferManagerImpl.java:187)
> at org.infinispan.statetransfer.StateTransferManagerImpl.access$000(StateTransferManagerImpl.java:66)
> at org.infinispan.statetransfer.StateTransferManagerImpl$1.rebalance(StateTransferManagerImpl.java:124)
> at org.infinispan.topology.LocalTopologyManagerImpl.lambda$doHandleRebalance$19(LocalTopologyManagerImpl.java:578)
> at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1072)
> at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
> at java.base/java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:610)
> at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:840)
> at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
> at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
> at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
> at java.base/java.lang.Thread.run(Thread.java:834)
> {code}
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
4 years
[JBoss JIRA] (ISPN-11703) JGroups Stacks should be initialized lazily
by Dan Berindei (Jira)
[ https://issues.redhat.com/browse/ISPN-11703?page=com.atlassian.jira.plugi... ]
Dan Berindei updated ISPN-11703:
--------------------------------
Status: Resolved (was: Pull Request Sent)
Assignee: Will Burns
Resolution: Done
> JGroups Stacks should be initialized lazily
> -------------------------------------------
>
> Key: ISPN-11703
> URL: https://issues.redhat.com/browse/ISPN-11703
> Project: Infinispan
> Issue Type: Bug
> Components: Core
> Reporter: Will Burns
> Assignee: Will Burns
> Priority: Major
> Fix For: 11.0.0.Dev05
>
>
> When we initialize the Parser we always read in the default jgroups stacks. This is done even if the global configuration doesn't have clustering. The parser is also started whenever a new cache is configured and started at runtime. These should be done only if the parser requires the jgroups stacks.
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
4 years
[JBoss JIRA] (ISPN-11524) PersistenceManagerImpl locks should be able to block
by Dan Berindei (Jira)
[ https://issues.redhat.com/browse/ISPN-11524?page=com.atlassian.jira.plugi... ]
Dan Berindei updated ISPN-11524:
--------------------------------
Status: Pull Request Sent (was: Open)
Git Pull Request: https://github.com/infinispan/infinispan/pull/8119
> PersistenceManagerImpl locks should be able to block
> ----------------------------------------------------
>
> Key: ISPN-11524
> URL: https://issues.redhat.com/browse/ISPN-11524
> Project: Infinispan
> Issue Type: Sub-task
> Reporter: Will Burns
> Priority: Major
> Fix For: 11.0.0.Dev05
>
>
> Here is an example stack trace acquired
> {code}
> java.lang.AssertionError: Blocking call! jdk.internal.misc.Unsafe#park on thread Thread[non-blocking-thread-SharedStoreTest-NodeB-p19754-t5,5,main]
> at org.infinispan.util.CoreTestBlockHoundIntegration.lambda$applyTo$0(CoreTestBlockHoundIntegration.java:43)
> at reactor.blockhound.BlockHound$Builder.lambda$install$6(BlockHound.java:318)
> at reactor.blockhound.BlockHoundRuntime.checkBlocking(BlockHoundRuntime.java:46)
> at java.base/jdk.internal.misc.Unsafe.park(Unsafe.java)
> at java.base/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
> at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:885)
> at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:1009)
> at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1324)
> at java.base/java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:738)
> at org.infinispan.persistence.manager.PersistenceManagerImpl.getFirstSegmentedStore(PersistenceManagerImpl.java:665)
> at org.infinispan.persistence.manager.PersistenceManagerImpl.publishEntries(PersistenceManagerImpl.java:704)
> at org.infinispan.persistence.manager.PersistenceManagerImpl.publishEntries(PersistenceManagerImpl.java:121)
> at org.infinispan.statetransfer.StateProviderImpl.publishStoreEntries(StateProviderImpl.java:307)
> at org.infinispan.scattered.impl.ScatteredStateProviderImpl.replicateAndInvalidate(ScatteredStateProviderImpl.java:94)
> at org.infinispan.scattered.impl.ScatteredStateProviderImpl.onTopologyUpdate(ScatteredStateProviderImpl.java:53)
> at org.infinispan.statetransfer.StateTransferManagerImpl.updateProviderAndConsumer(StateTransferManagerImpl.java:202)
> at org.infinispan.statetransfer.StateTransferManagerImpl.lambda$doTopologyUpdate$0(StateTransferManagerImpl.java:188)
> at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1106)
> at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2235)
> at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:143)
> at org.infinispan.statetransfer.StateTransferManagerImpl.doTopologyUpdate(StateTransferManagerImpl.java:187)
> at org.infinispan.statetransfer.StateTransferManagerImpl.access$000(StateTransferManagerImpl.java:66)
> at org.infinispan.statetransfer.StateTransferManagerImpl$1.rebalance(StateTransferManagerImpl.java:124)
> at org.infinispan.topology.LocalTopologyManagerImpl.lambda$doHandleRebalance$19(LocalTopologyManagerImpl.java:578)
> at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1072)
> at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
> at java.base/java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:610)
> at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:840)
> at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
> at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
> at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
> at java.base/java.lang.Thread.run(Thread.java:834)
> {code}
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
4 years
[JBoss JIRA] (ISPN-11543) Add BlockingHandler to simplify running blocking operations
by Dan Berindei (Jira)
[ https://issues.redhat.com/browse/ISPN-11543?page=com.atlassian.jira.plugi... ]
Dan Berindei updated ISPN-11543:
--------------------------------
Status: Resolved (was: Pull Request Sent)
Resolution: Done
> Add BlockingHandler to simplify running blocking operations
> -----------------------------------------------------------
>
> Key: ISPN-11543
> URL: https://issues.redhat.com/browse/ISPN-11543
> Project: Infinispan
> Issue Type: Sub-task
> Reporter: Will Burns
> Assignee: Will Burns
> Priority: Major
> Fix For: 11.0.0.Dev05
>
>
> We have quite a few places that must run blocking operations that cannot be changed. These places must run the operation in a blocking thread and return on a non blocking thread. All of these places must register both a blocking and non blocking thread pool and properly handle them. This is both error prone and a lot of extra code. We should isolate this to a shared component which will in turn provide for an easier way to find such operations.
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
4 years