[JBoss JIRA] (ISPN-10312) Evaluate locations that use CompletableFuture#join
by Will Burns (Jira)
Will Burns created ISPN-10312:
---------------------------------
Summary: Evaluate locations that use CompletableFuture#join
Key: ISPN-10312
URL: https://issues.jboss.org/browse/ISPN-10312
Project: Infinispan
Issue Type: Sub-task
Reporter: Will Burns
Invoking join or get on a CompletableFuture is a code stink and should be evaluated if it can be refactored to something else. Quite possibly this JIRA may be to just create other JIRAs but any simple refactorings can be done here.
Invocations to watch for {code}CompletionStages.join(){code}, {code}CompletableFuture.join(){code}, {code}CompletableFuture.get(){code}, {code}CompletableFuture.get(int, TimeUnit){code}
--
This message was sent by Atlassian Jira
(v7.12.1#712002)
5 years, 7 months
[JBoss JIRA] (ISPN-9744) Cache creation should be non blocking
by Will Burns (Jira)
[ https://issues.jboss.org/browse/ISPN-9744?page=com.atlassian.jira.plugin.... ]
Will Burns updated ISPN-9744:
-----------------------------
Parent: ISPN-10309
Issue Type: Sub-task (was: Enhancement)
> Cache creation should be non blocking
> -------------------------------------
>
> Key: ISPN-9744
> URL: https://issues.jboss.org/browse/ISPN-9744
> Project: Infinispan
> Issue Type: Sub-task
> Components: Core
> Reporter: Will Burns
> Assignee: Will Burns
> Priority: Major
>
> Internally cache creation stores entries in a CompletableFuture. We however don't return a CompletionStage to the invoker of getCache. We should do this and utilize the same approach to async calls that {code}DefaultCacheManager#startCaches{code} does by starting a thread per cache.
--
This message was sent by Atlassian Jira
(v7.12.1#712002)
5 years, 7 months
[JBoss JIRA] (ISPN-10311) Remove all the blocking Transport methods
by Will Burns (Jira)
Will Burns created ISPN-10311:
---------------------------------
Summary: Remove all the blocking Transport methods
Key: ISPN-10311
URL: https://issues.jboss.org/browse/ISPN-10311
Project: Infinispan
Issue Type: Sub-task
Components: Core
Reporter: Will Burns
The Transport class has many blocking methods on it that have been deprecated. This class was never public as it doesn't have a package-info.java, thus we can remove these methods at will.
--
This message was sent by Atlassian Jira
(v7.12.1#712002)
5 years, 7 months
[JBoss JIRA] (ISPN-10310) State Transfer needs to be made non blocking
by Will Burns (Jira)
Will Burns created ISPN-10310:
---------------------------------
Summary: State Transfer needs to be made non blocking
Key: ISPN-10310
URL: https://issues.jboss.org/browse/ISPN-10310
Project: Infinispan
Issue Type: Sub-task
Components: Core, State Transfer
Reporter: Will Burns
Fix For: 10.0.0.Final
State Transfer currently invokes many methods that are non blocking and blocks to wait for those to complete. We need to ensure that all the various usages are converted to be non blocking and when absolutely not possible convert them to using a separate thread pool. The final goal is to eventually eliminate the state transfer thread pool as well.
--
This message was sent by Atlassian Jira
(v7.12.1#712002)
5 years, 7 months
[JBoss JIRA] (ISPN-10309) Convert Remaining Parts to Non Blocking & Reduce Thread Pools
by Will Burns (Jira)
Will Burns created ISPN-10309:
---------------------------------
Summary: Convert Remaining Parts to Non Blocking & Reduce Thread Pools
Key: ISPN-10309
URL: https://issues.jboss.org/browse/ISPN-10309
Project: Infinispan
Issue Type: Enhancement
Components: Core
Reporter: Will Burns
Assignee: Will Burns
Fix For: 10.0.0.Final
We would love to get our thread pools down to a single CPU thread pool (size = numCores) and a blocking thread pool (arbitrarily large). We may also require a scheduler pool for various options as well (limited size 1-2?).
To do this we need to remove remnants of our blocking code as possible. Possible issues for blocking are mostly around locks and io operations.
The persistence layer was completed with ISPN-9722 so that is not an issue.
The requirement around locking can be relaxed if the locks are guaranteed to be small in scope and do not wrap other blocking operations. An example would be a lock such as ones in CHM as long as we don't have large blocks for functional argument types.
If code cannot be made non blocking we must offload the operation to the blocking thread pool. Care must be taken to ensure that once the blocking portion of code is completed that we switch back the to CPU thread pool as soon as possible. The listener API for example is violating this and will run code in Infinispan from any thread that completes the listener that could be done from a user.
--
This message was sent by Atlassian Jira
(v7.12.1#712002)
5 years, 7 months