From 5dc905352c0b473bfcf954cbed195877bc406cba Mon Sep 17 00:00:00 2001 From: Andrew Kerr Date: Fri, 7 Sep 2018 16:21:24 +0100 Subject: [PATCH] Refactor JobScheduler's work stealing executor with async mode factory --- .../src/main/java/org/neo4j/scheduler/JobScheduler.java | 7 ++++--- .../test/java/org/neo4j/scheduler/JobSchedulerAdapter.java | 2 +- .../java/org/neo4j/scheduler/ThreadPoolJobScheduler.java | 2 +- .../neo4j/kernel/impl/scheduler/CentralJobScheduler.java | 7 ++++++- .../org/neo4j/kernel/impl/util/CountingJobScheduler.java | 4 ++-- .../test/java/org/neo4j/test/FakeClockJobScheduler.java | 2 +- 6 files changed, 15 insertions(+), 9 deletions(-) diff --git a/community/common/src/main/java/org/neo4j/scheduler/JobScheduler.java b/community/common/src/main/java/org/neo4j/scheduler/JobScheduler.java index a2a55f353ea38..8825b4bddb278 100644 --- a/community/common/src/main/java/org/neo4j/scheduler/JobScheduler.java +++ b/community/common/src/main/java/org/neo4j/scheduler/JobScheduler.java @@ -50,10 +50,11 @@ public interface JobScheduler extends Lifecycle, AutoCloseable ExecutorService workStealingExecutor( Group group, int parallelism ); /** - * Creates an {@link ExecutorService} that does works-stealing - read more about this in {@link ForkJoinPool} - * @param asyncMode Defaults to false. A value of true may be more suitable for systems where worker threads only process event-style asynchronous tasks + * Creates an {@link ExecutorService} that does works-stealing with asyncMode set to true - read more about this in {@link ForkJoinPool} + *

+ * This may be more suitable for systems where worker threads only process event-style asynchronous tasks. */ - ExecutorService workStealingExecutor( Group group, int parallelism, boolean asyncMode ); + ExecutorService workStealingExecutorAsyncMode( Group group, int parallelism ); /** * Expose a group scheduler as a {@link java.util.concurrent.ThreadFactory}. diff --git a/community/common/src/test/java/org/neo4j/scheduler/JobSchedulerAdapter.java b/community/common/src/test/java/org/neo4j/scheduler/JobSchedulerAdapter.java index e1cce49fb5da8..dcb415e5c5948 100644 --- a/community/common/src/test/java/org/neo4j/scheduler/JobSchedulerAdapter.java +++ b/community/common/src/test/java/org/neo4j/scheduler/JobSchedulerAdapter.java @@ -79,7 +79,7 @@ public ExecutorService workStealingExecutor( Group group, int parallelism ) } @Override - public ExecutorService workStealingExecutor( Group group, int parallelism, boolean asyncMode ) + public ExecutorService workStealingExecutorAsyncMode( Group group, int parallelism ) { return null; } diff --git a/community/common/src/test/java/org/neo4j/scheduler/ThreadPoolJobScheduler.java b/community/common/src/test/java/org/neo4j/scheduler/ThreadPoolJobScheduler.java index d8ceac3437947..ed441bb0b1f54 100644 --- a/community/common/src/test/java/org/neo4j/scheduler/ThreadPoolJobScheduler.java +++ b/community/common/src/test/java/org/neo4j/scheduler/ThreadPoolJobScheduler.java @@ -58,7 +58,7 @@ public ExecutorService workStealingExecutor( Group group, int parallelism ) } @Override - public ExecutorService workStealingExecutor( Group group, int parallelism, boolean asyncMode ) + public ExecutorService workStealingExecutorAsyncMode( Group group, int parallelism ) { return executor; } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/CentralJobScheduler.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/CentralJobScheduler.java index a85fb9a30a961..2506a653a979f 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/CentralJobScheduler.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/CentralJobScheduler.java @@ -118,7 +118,12 @@ public ExecutorService workStealingExecutor( Group group, int parallelism ) } @Override - public ExecutorService workStealingExecutor( Group group, int parallelism, boolean asyncMode ) + public ExecutorService workStealingExecutorAsyncMode( Group group, int parallelism ) + { + return workStealingExecutor( group, parallelism, true ); + } + + private ExecutorService workStealingExecutor( Group group, int parallelism, boolean asyncMode ) { return workStealingExecutors.computeIfAbsent( group, g -> createNewWorkStealingExecutor( g, parallelism, asyncMode ) ); } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/util/CountingJobScheduler.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/util/CountingJobScheduler.java index b790f746f504c..8f9f7e87c7fbe 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/util/CountingJobScheduler.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/util/CountingJobScheduler.java @@ -65,9 +65,9 @@ public ExecutorService workStealingExecutor( Group group, int parallelism ) } @Override - public ExecutorService workStealingExecutor( Group group, int parallelism, boolean asyncMode ) + public ExecutorService workStealingExecutorAsyncMode( Group group, int parallelism ) { - return delegate.workStealingExecutor( group, parallelism, asyncMode ); + return delegate.workStealingExecutorAsyncMode( group, parallelism ); } @Override diff --git a/community/kernel/src/test/java/org/neo4j/test/FakeClockJobScheduler.java b/community/kernel/src/test/java/org/neo4j/test/FakeClockJobScheduler.java index 259c855caa018..39ed4e9a7761b 100644 --- a/community/kernel/src/test/java/org/neo4j/test/FakeClockJobScheduler.java +++ b/community/kernel/src/test/java/org/neo4j/test/FakeClockJobScheduler.java @@ -107,7 +107,7 @@ public ExecutorService workStealingExecutor( Group group, int parallelism ) } @Override - public ExecutorService workStealingExecutor( Group group, int parallelism, boolean asyncMode ) + public ExecutorService workStealingExecutorAsyncMode( Group group, int parallelism ) { throw new UnsupportedOperationException(); }