diff --git a/community/common/src/main/java/org/neo4j/scheduler/CancelListener.java b/community/common/src/main/java/org/neo4j/scheduler/CancelListener.java new file mode 100644 index 0000000000000..440cdc212c43b --- /dev/null +++ b/community/common/src/main/java/org/neo4j/scheduler/CancelListener.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2002-2018 "Neo4j," + * Neo4j Sweden AB [http://neo4j.com] + * + * This file is part of Neo4j. + * + * Neo4j is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.neo4j.scheduler; + +/** + * Gets notified about calls to {@link JobHandle#cancel(boolean)}. + */ +public interface CancelListener +{ + /** + * Notification that {@link JobHandle#cancel(boolean)} was called. + * + * @param mayInterruptIfRunning argument from {@link JobHandle#cancel(boolean)} call. + */ + void cancelled( boolean mayInterruptIfRunning ); +} diff --git a/community/common/src/main/java/org/neo4j/scheduler/Group.java b/community/common/src/main/java/org/neo4j/scheduler/Group.java new file mode 100644 index 0000000000000..ab3c0e0a81641 --- /dev/null +++ b/community/common/src/main/java/org/neo4j/scheduler/Group.java @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2002-2018 "Neo4j," + * Neo4j Sweden AB [http://neo4j.com] + * + * This file is part of Neo4j. + * + * Neo4j is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.neo4j.scheduler; + +import java.util.Objects; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * Represents a common group of jobs, defining how they should be scheduled. + */ +public final class Group +{ + private final AtomicInteger threadCounter = new AtomicInteger(); + private final String name; + + Group( String name ) + { + Objects.requireNonNull( name, "Group name cannot be null." ); + this.name = name; + } + + public String name() + { + return name; + } + + /** + * Name a new thread. This method may or may not be used, it is up to the scheduling strategy to decide + * to honor this. + */ + public String threadName() + { + return "neo4j." + name() + "-" + threadCounter.incrementAndGet(); + } + + @Override + public boolean equals( Object o ) + { + if ( this == o ) + { + return true; + } + if ( o == null || getClass() != o.getClass() ) + { + return false; + } + + Group group = (Group) o; + + return name.equals( group.name ); + } + + @Override + public int hashCode() + { + return name.hashCode(); + } +} diff --git a/community/common/src/main/java/org/neo4j/scheduler/JobHandle.java b/community/common/src/main/java/org/neo4j/scheduler/JobHandle.java new file mode 100644 index 0000000000000..1d30c52541b43 --- /dev/null +++ b/community/common/src/main/java/org/neo4j/scheduler/JobHandle.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2002-2018 "Neo4j," + * Neo4j Sweden AB [http://neo4j.com] + * + * This file is part of Neo4j. + * + * Neo4j is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.neo4j.scheduler; + +import java.util.concurrent.CancellationException; +import java.util.concurrent.ExecutionException; + +public interface JobHandle +{ + void cancel( boolean mayInterruptIfRunning ); + + void waitTermination() throws InterruptedException, ExecutionException, CancellationException; + + default void registerCancelListener( CancelListener listener ) + { + throw new UnsupportedOperationException( "Unsupported in this implementation" ); + } +} 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 c8a8a2eed9828..63cdd45192d56 100644 --- a/community/common/src/main/java/org/neo4j/scheduler/JobScheduler.java +++ b/community/common/src/main/java/org/neo4j/scheduler/JobScheduler.java @@ -19,15 +19,11 @@ */ package org.neo4j.scheduler; -import java.util.Objects; -import java.util.concurrent.CancellationException; -import java.util.concurrent.ExecutionException; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.util.concurrent.ForkJoinPool; import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; import org.neo4j.kernel.lifecycle.Lifecycle; @@ -37,58 +33,6 @@ */ public interface JobScheduler extends Lifecycle { - /** - * Represents a common group of jobs, defining how they should be scheduled. - */ - final class Group - { - private final AtomicInteger threadCounter = new AtomicInteger(); - private final String name; - - private Group( String name ) - { - Objects.requireNonNull( name, "Group name cannot be null." ); - this.name = name; - } - - public String name() - { - return name; - } - - /** - * Name a new thread. This method may or may not be used, it is up to the scheduling strategy to decide - * to honor this. - */ - public String threadName() - { - return "neo4j." + name() + "-" + threadCounter.incrementAndGet(); - } - - @Override - public boolean equals( Object o ) - { - if ( this == o ) - { - return true; - } - if ( o == null || getClass() != o.getClass() ) - { - return false; - } - - Group group = (Group) o; - - return name.equals( group.name ); - } - - @Override - public int hashCode() - { - return name.hashCode(); - } - } - /** * This is an exhaustive list of job types that run in the database. It should be expanded as needed for new groups * of jobs. @@ -242,31 +186,6 @@ private Groups() } } - interface JobHandle - { - void cancel( boolean mayInterruptIfRunning ); - - void waitTermination() throws InterruptedException, ExecutionException, CancellationException; - - default void registerCancelListener( CancelListener listener ) - { - throw new UnsupportedOperationException( "Unsupported in this implementation" ); - } - } - - /** - * Gets notified about calls to {@link JobHandle#cancel(boolean)}. - */ - interface CancelListener - { - /** - * Notification that {@link JobHandle#cancel(boolean)} was called. - * - * @param mayInterruptIfRunning argument from {@link JobHandle#cancel(boolean)} call. - */ - void cancelled( boolean mayInterruptIfRunning ); - } - /** * Assign a specific name to the top-most scheduler group. *

diff --git a/community/community-it/index-it/src/test/java/org/neo4j/index/impl/lucene/explicit/NonUniqueIndexTest.java b/community/community-it/index-it/src/test/java/org/neo4j/index/impl/lucene/explicit/NonUniqueIndexTest.java index 5e2843dd6ff96..d1ca790232b70 100644 --- a/community/community-it/index-it/src/test/java/org/neo4j/index/impl/lucene/explicit/NonUniqueIndexTest.java +++ b/community/community-it/index-it/src/test/java/org/neo4j/index/impl/lucene/explicit/NonUniqueIndexTest.java @@ -52,6 +52,8 @@ import org.neo4j.kernel.impl.logging.NullLogService; import org.neo4j.kernel.impl.scheduler.CentralJobScheduler; import org.neo4j.logging.LogProvider; +import org.neo4j.scheduler.Group; +import org.neo4j.scheduler.JobHandle; import org.neo4j.storageengine.api.schema.IndexReader; import org.neo4j.test.rule.PageCacheAndDependenciesRule; import org.neo4j.test.rule.fs.DefaultFileSystemRule; diff --git a/community/index/src/test/java/org/neo4j/index/internal/gbptree/GroupingRecoveryCleanupWorkCollectorTest.java b/community/index/src/test/java/org/neo4j/index/internal/gbptree/GroupingRecoveryCleanupWorkCollectorTest.java index a5306375db674..7ecfa3ed60136 100644 --- a/community/index/src/test/java/org/neo4j/index/internal/gbptree/GroupingRecoveryCleanupWorkCollectorTest.java +++ b/community/index/src/test/java/org/neo4j/index/internal/gbptree/GroupingRecoveryCleanupWorkCollectorTest.java @@ -27,6 +27,8 @@ import java.util.List; import org.neo4j.helpers.Exceptions; +import org.neo4j.scheduler.Group; +import org.neo4j.scheduler.JobHandle; import org.neo4j.scheduler.JobSchedulerAdapter; import static org.junit.jupiter.api.Assertions.assertThrows; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactionMonitorScheduler.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactionMonitorScheduler.java index ad6a1809c4803..1b22750638ae8 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactionMonitorScheduler.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactionMonitorScheduler.java @@ -22,6 +22,7 @@ import java.util.concurrent.TimeUnit; import org.neo4j.kernel.lifecycle.LifecycleAdapter; +import org.neo4j.scheduler.JobHandle; import org.neo4j.scheduler.JobScheduler; import static org.neo4j.scheduler.JobScheduler.Groups.transactionTimeoutMonitor; @@ -31,7 +32,7 @@ public class KernelTransactionMonitorScheduler extends LifecycleAdapter private final KernelTransactionTimeoutMonitor kernelTransactionTimeoutMonitor; private final JobScheduler scheduler; private final long checkIntervalMillis; - private JobScheduler.JobHandle monitorJobHandle; + private JobHandle monitorJobHandle; public KernelTransactionMonitorScheduler( KernelTransactionTimeoutMonitor kernelTransactionTimeoutMonitor, JobScheduler scheduler, long checkIntervalMillis ) diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/sampling/IndexSamplingController.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/sampling/IndexSamplingController.java index 6ea3d95d7193a..25056d1724437 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/sampling/IndexSamplingController.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/sampling/IndexSamplingController.java @@ -31,7 +31,7 @@ import org.neo4j.kernel.impl.api.index.IndexMapSnapshotProvider; import org.neo4j.kernel.impl.api.index.IndexProxy; import org.neo4j.scheduler.JobScheduler; -import org.neo4j.scheduler.JobScheduler.JobHandle; +import org.neo4j.scheduler.JobHandle; import static java.util.concurrent.TimeUnit.SECONDS; import static org.neo4j.kernel.impl.api.index.sampling.IndexSamplingMode.BACKGROUND_REBUILD_UPDATED; 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 0466959824c9f..4768c97294373 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 @@ -31,6 +31,8 @@ import org.neo4j.helpers.Exceptions; import org.neo4j.kernel.lifecycle.LifecycleAdapter; +import org.neo4j.scheduler.Group; +import org.neo4j.scheduler.JobHandle; import org.neo4j.scheduler.JobScheduler; import org.neo4j.time.Clocks; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/GroupedDaemonThreadFactory.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/GroupedDaemonThreadFactory.java index dae61ca6325fd..3acbcddcfe8da 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/GroupedDaemonThreadFactory.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/GroupedDaemonThreadFactory.java @@ -24,14 +24,14 @@ import java.util.concurrent.ThreadFactory; import java.util.concurrent.atomic.AtomicReference; -import org.neo4j.scheduler.JobScheduler; +import org.neo4j.scheduler.Group; final class GroupedDaemonThreadFactory implements ThreadFactory, ForkJoinPool.ForkJoinWorkerThreadFactory { - private final JobScheduler.Group group; + private final Group group; private final ThreadGroup threadGroup; - GroupedDaemonThreadFactory( JobScheduler.Group group, ThreadGroup parentThreadGroup ) + GroupedDaemonThreadFactory( Group group, ThreadGroup parentThreadGroup ) { this.group = group; threadGroup = new ThreadGroup( parentThreadGroup, group.name() ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/PooledJobHandle.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/PooledJobHandle.java index b03a69c031f1d..7f69280763e74 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/PooledJobHandle.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/PooledJobHandle.java @@ -25,14 +25,15 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; -import org.neo4j.scheduler.JobScheduler; +import org.neo4j.scheduler.CancelListener; +import org.neo4j.scheduler.JobHandle; -final class PooledJobHandle implements JobScheduler.JobHandle +final class PooledJobHandle implements JobHandle { private final Future future; private final Object registryKey; private final ConcurrentHashMap> registry; - private final List cancelListeners = new CopyOnWriteArrayList<>(); + private final List cancelListeners = new CopyOnWriteArrayList<>(); PooledJobHandle( Future future, Object registryKey, ConcurrentHashMap> registry ) { @@ -45,7 +46,7 @@ final class PooledJobHandle implements JobScheduler.JobHandle public void cancel( boolean mayInterruptIfRunning ) { future.cancel( mayInterruptIfRunning ); - for ( JobScheduler.CancelListener cancelListener : cancelListeners ) + for ( CancelListener cancelListener : cancelListeners ) { cancelListener.cancelled( mayInterruptIfRunning ); } @@ -59,7 +60,7 @@ public void waitTermination() throws InterruptedException, ExecutionException } @Override - public void registerCancelListener( JobScheduler.CancelListener listener ) + public void registerCancelListener( CancelListener listener ) { cancelListeners.add( listener ); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/ScheduledJobHandle.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/ScheduledJobHandle.java index 480bc892a7410..0897a678309eb 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/ScheduledJobHandle.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/ScheduledJobHandle.java @@ -24,9 +24,9 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.atomic.AtomicInteger; -import org.neo4j.scheduler.JobScheduler; -import org.neo4j.scheduler.JobScheduler.CancelListener; -import org.neo4j.scheduler.JobScheduler.JobHandle; +import org.neo4j.scheduler.Group; +import org.neo4j.scheduler.CancelListener; +import org.neo4j.scheduler.JobHandle; import org.neo4j.util.concurrent.BinaryLatch; /** @@ -62,14 +62,14 @@ final class ScheduledJobHandle extends AtomicInteger implements JobHandle // or happens after the relevant handles have been added to the queue. long nextDeadlineNanos; - private final JobScheduler.Group group; + private final Group group; private final CopyOnWriteArrayList cancelListeners; private final BinaryLatch handleRelease; private final Runnable task; private volatile JobHandle latestHandle; private volatile Throwable lastException; - ScheduledJobHandle( TimeBasedTaskScheduler scheduler, JobScheduler.Group group, Runnable task, + ScheduledJobHandle( TimeBasedTaskScheduler scheduler, Group group, Runnable task, long nextDeadlineNanos, long reschedulingDelayNanos ) { this.group = group; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/ThreadPool.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/ThreadPool.java index 80743d862f67f..65eab22c8bdc3 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/ThreadPool.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/ThreadPool.java @@ -26,8 +26,8 @@ import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; -import org.neo4j.scheduler.JobScheduler; -import org.neo4j.scheduler.JobScheduler.JobHandle; +import org.neo4j.scheduler.Group; +import org.neo4j.scheduler.JobHandle; final class ThreadPool { @@ -36,7 +36,7 @@ final class ThreadPool private final ConcurrentHashMap> registry; private InterruptedException shutdownInterrupted; - ThreadPool( JobScheduler.Group group, ThreadGroup parentThreadGroup ) + ThreadPool( Group group, ThreadGroup parentThreadGroup ) { threadFactory = new GroupedDaemonThreadFactory( group, parentThreadGroup ); executor = Executors.newCachedThreadPool( threadFactory ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/ThreadPoolManager.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/ThreadPoolManager.java index bc65b38f5ad56..f0b6e6169f08a 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/ThreadPoolManager.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/ThreadPoolManager.java @@ -23,8 +23,8 @@ import java.util.function.Function; import org.neo4j.helpers.Exceptions; -import org.neo4j.scheduler.JobScheduler.Group; -import org.neo4j.scheduler.JobScheduler.JobHandle; +import org.neo4j.scheduler.Group; +import org.neo4j.scheduler.JobHandle; final class ThreadPoolManager { diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/TimeBasedTaskScheduler.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/TimeBasedTaskScheduler.java index a806fd289ad7f..516e3e0bc9b8e 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/TimeBasedTaskScheduler.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/scheduler/TimeBasedTaskScheduler.java @@ -24,8 +24,8 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.LockSupport; -import org.neo4j.scheduler.JobScheduler.Group; -import org.neo4j.scheduler.JobScheduler.JobHandle; +import org.neo4j.scheduler.Group; +import org.neo4j.scheduler.JobHandle; import org.neo4j.time.SystemNanoClock; final class TimeBasedTaskScheduler implements Runnable diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/storageengine/impl/recordstorage/id/BufferedIdController.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/storageengine/impl/recordstorage/id/BufferedIdController.java index 2c904c89a7545..65f263776ca75 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/storageengine/impl/recordstorage/id/BufferedIdController.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/storageengine/impl/recordstorage/id/BufferedIdController.java @@ -25,6 +25,7 @@ import org.neo4j.kernel.impl.api.KernelTransactionsSnapshot; import org.neo4j.kernel.impl.store.id.BufferingIdGeneratorFactory; import org.neo4j.kernel.lifecycle.LifecycleAdapter; +import org.neo4j.scheduler.JobHandle; import org.neo4j.scheduler.JobScheduler; /** @@ -36,7 +37,7 @@ public class BufferedIdController extends LifecycleAdapter implements IdControll { private final BufferingIdGeneratorFactory bufferingIdGeneratorFactory; private final JobScheduler scheduler; - private JobScheduler.JobHandle jobHandle; + private JobHandle jobHandle; public BufferedIdController( BufferingIdGeneratorFactory bufferingIdGeneratorFactory, JobScheduler scheduler ) { diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/checkpoint/CheckPointScheduler.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/checkpoint/CheckPointScheduler.java index 89d78380ab349..d690d49d89d0b 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/checkpoint/CheckPointScheduler.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/checkpoint/CheckPointScheduler.java @@ -27,6 +27,7 @@ import org.neo4j.kernel.impl.store.UnderlyingStorageException; import org.neo4j.kernel.internal.DatabaseHealth; import org.neo4j.kernel.lifecycle.LifecycleAdapter; +import org.neo4j.scheduler.JobHandle; import org.neo4j.scheduler.JobScheduler; import org.neo4j.util.FeatureToggles; @@ -106,7 +107,7 @@ private UnderlyingStorageException constructCombinedFailure() } }; - private volatile JobScheduler.JobHandle handle; + private volatile JobHandle handle; private volatile boolean stopped; private volatile boolean checkPointing; private final BooleanSupplier checkPointingCondition = new BooleanSupplier() diff --git a/community/kernel/src/main/java/org/neo4j/kernel/monitoring/VmPauseMonitor.java b/community/kernel/src/main/java/org/neo4j/kernel/monitoring/VmPauseMonitor.java index 6c21fd8c385ab..bc115e4c659a9 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/monitoring/VmPauseMonitor.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/monitoring/VmPauseMonitor.java @@ -26,7 +26,7 @@ import org.neo4j.logging.Log; import org.neo4j.scheduler.JobScheduler; -import org.neo4j.scheduler.JobScheduler.JobHandle; +import org.neo4j.scheduler.JobHandle; import org.neo4j.util.VisibleForTesting; import static java.lang.Math.max; diff --git a/community/kernel/src/main/java/org/neo4j/udc/UsageData.java b/community/kernel/src/main/java/org/neo4j/udc/UsageData.java index f57ba653361be..4076b47a5065f 100644 --- a/community/kernel/src/main/java/org/neo4j/udc/UsageData.java +++ b/community/kernel/src/main/java/org/neo4j/udc/UsageData.java @@ -21,6 +21,7 @@ import java.util.concurrent.ConcurrentHashMap; +import org.neo4j.scheduler.JobHandle; import org.neo4j.scheduler.JobScheduler; import org.neo4j.kernel.lifecycle.LifecycleAdapter; @@ -39,7 +40,7 @@ public class UsageData extends LifecycleAdapter { private final ConcurrentHashMap store = new ConcurrentHashMap<>(); private final JobScheduler scheduler; - private JobScheduler.JobHandle featureDecayJob; + private JobHandle featureDecayJob; public UsageData( JobScheduler scheduler ) { diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionTimeoutMonitorSchedulerTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionTimeoutMonitorSchedulerTest.java index 77883b3afbd95..0a05f14295603 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionTimeoutMonitorSchedulerTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionTimeoutMonitorSchedulerTest.java @@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit; +import org.neo4j.scheduler.JobHandle; import org.neo4j.scheduler.JobScheduler; import static org.mockito.ArgumentMatchers.any; @@ -43,7 +44,7 @@ public class KernelTransactionTimeoutMonitorSchedulerTest @Test public void startJobTransactionMonitor() { - JobScheduler.JobHandle jobHandle = Mockito.mock( JobScheduler.JobHandle.class ); + JobHandle jobHandle = Mockito.mock( JobHandle.class ); when( jobScheduler.scheduleRecurring( eq(transactionTimeoutMonitor), eq( transactionMonitor), anyLong(), any(TimeUnit.class) )).thenReturn( jobHandle ); diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/scheduler/CentralJobSchedulerTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/scheduler/CentralJobSchedulerTest.java index b1348ed7c1ad8..1e5048eaf64a4 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/scheduler/CentralJobSchedulerTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/scheduler/CentralJobSchedulerTest.java @@ -34,8 +34,7 @@ import java.util.concurrent.locks.LockSupport; import org.neo4j.kernel.lifecycle.LifeSupport; -import org.neo4j.scheduler.JobScheduler; -import org.neo4j.scheduler.JobScheduler.JobHandle; +import org.neo4j.scheduler.JobHandle; import org.neo4j.util.concurrent.BinaryLatch; import static java.lang.Thread.sleep; @@ -91,7 +90,7 @@ public void shouldCancelRecurringJob() throws Exception // Given long period = 2; life.start(); - JobScheduler.JobHandle jobHandle = + JobHandle jobHandle = scheduler.scheduleRecurring( indexPopulation, countInvocationsJob, period, MILLISECONDS ); awaitFirstInvocation(); diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/scheduler/TimeBasedTaskSchedulerTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/scheduler/TimeBasedTaskSchedulerTest.java index 11c9df96750aa..56f38f91cee77 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/scheduler/TimeBasedTaskSchedulerTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/scheduler/TimeBasedTaskSchedulerTest.java @@ -31,7 +31,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; -import org.neo4j.scheduler.JobScheduler.JobHandle; +import org.neo4j.scheduler.JobHandle; import org.neo4j.time.FakeClock; import org.neo4j.util.concurrent.BinaryLatch; 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 104c8dbf59dd9..1a3a0dbf930fe 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 @@ -26,6 +26,8 @@ import java.util.concurrent.atomic.AtomicInteger; import org.neo4j.kernel.impl.scheduler.CentralJobScheduler; +import org.neo4j.scheduler.Group; +import org.neo4j.scheduler.JobHandle; import org.neo4j.scheduler.JobScheduler; public class CountingJobScheduler implements JobScheduler diff --git a/community/kernel/src/test/java/org/neo4j/kernel/monitoring/VmPauseMonitorTest.java b/community/kernel/src/test/java/org/neo4j/kernel/monitoring/VmPauseMonitorTest.java index 89bc27c4a6db2..c8aff349401c7 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/monitoring/VmPauseMonitorTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/monitoring/VmPauseMonitorTest.java @@ -26,8 +26,9 @@ import org.neo4j.kernel.monitoring.VmPauseMonitor.VmPauseInfo; import org.neo4j.logging.NullLog; +import org.neo4j.scheduler.Group; import org.neo4j.scheduler.JobScheduler; -import org.neo4j.scheduler.JobScheduler.JobHandle; +import org.neo4j.scheduler.JobHandle; import static java.time.Duration.ofMillis; import static java.time.Duration.ofSeconds; @@ -52,7 +53,7 @@ public class VmPauseMonitorTest @Before public void setUp() { - doReturn( jobHandle ).when( jobScheduler ).schedule( any( JobScheduler.Group.class ), any( Runnable.class ) ); + doReturn( jobHandle ).when( jobScheduler ).schedule( any( Group.class ), any( Runnable.class ) ); } @Test @@ -78,7 +79,7 @@ public void testStartAndStop() monitor.start(); monitor.stop(); - verify( jobScheduler ).schedule( any( JobScheduler.Group.class ), any( Runnable.class ) ); + verify( jobScheduler ).schedule( any( Group.class ), any( Runnable.class ) ); verify( jobHandle ).cancel( eq( true ) ); } @@ -89,7 +90,7 @@ public void testRestart() monitor.stop(); monitor.start(); - verify( jobScheduler, times( 2 ) ).schedule( any( JobScheduler.Group.class ), any( Runnable.class ) ); + verify( jobScheduler, times( 2 ) ).schedule( any( Group.class ), any( Runnable.class ) ); verify( jobHandle ).cancel( eq( true ) ); } 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 0e98874dca832..772a4d0b94bac 100644 --- a/community/kernel/src/test/java/org/neo4j/test/FakeClockJobScheduler.java +++ b/community/kernel/src/test/java/org/neo4j/test/FakeClockJobScheduler.java @@ -28,6 +28,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; +import org.neo4j.scheduler.Group; import org.neo4j.scheduler.JobScheduler; import org.neo4j.time.FakeClock; @@ -173,7 +174,7 @@ public void shutdown() throw new UnsupportedOperationException(); } - class JobHandle implements JobScheduler.JobHandle + class JobHandle implements org.neo4j.scheduler.JobHandle { private final long id = jobIdGen.incrementAndGet(); private final Runnable runnable; diff --git a/community/kernel/src/test/java/org/neo4j/test/OnDemandJobScheduler.java b/community/kernel/src/test/java/org/neo4j/test/OnDemandJobScheduler.java index 1f2e167e7edfe..2b97c38ca1cf9 100644 --- a/community/kernel/src/test/java/org/neo4j/test/OnDemandJobScheduler.java +++ b/community/kernel/src/test/java/org/neo4j/test/OnDemandJobScheduler.java @@ -27,6 +27,8 @@ import java.util.concurrent.TimeUnit; import org.neo4j.kernel.lifecycle.LifecycleAdapter; +import org.neo4j.scheduler.Group; +import org.neo4j.scheduler.JobHandle; import org.neo4j.scheduler.JobScheduler; public class OnDemandJobScheduler extends LifecycleAdapter implements JobScheduler diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/consensus/log/pruning/PruningScheduler.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/consensus/log/pruning/PruningScheduler.java index e20a6f4d1d1a6..298558ae4fe80 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/consensus/log/pruning/PruningScheduler.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/consensus/log/pruning/PruningScheduler.java @@ -31,6 +31,7 @@ import org.neo4j.causalclustering.core.state.RaftLogPruner; import org.neo4j.function.Predicates; import org.neo4j.kernel.impl.store.UnderlyingStorageException; +import org.neo4j.scheduler.JobHandle; import org.neo4j.scheduler.JobScheduler; import org.neo4j.kernel.lifecycle.LifecycleAdapter; import org.neo4j.logging.Log; @@ -74,7 +75,7 @@ public void run() }; private final Log log; - private volatile JobScheduler.JobHandle handle; + private volatile JobHandle handle; private volatile boolean stopped; private volatile boolean checkPointing; private final BooleanSupplier checkPointingCondition = new BooleanSupplier() diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/consensus/log/segmented/SegmentedRaftLog.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/consensus/log/segmented/SegmentedRaftLog.java index b2e14d87a4a02..f265048992645 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/consensus/log/segmented/SegmentedRaftLog.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/consensus/log/segmented/SegmentedRaftLog.java @@ -37,6 +37,7 @@ import org.neo4j.kernel.lifecycle.LifecycleAdapter; import org.neo4j.logging.Log; import org.neo4j.logging.LogProvider; +import org.neo4j.scheduler.JobHandle; import org.neo4j.scheduler.JobScheduler; import static java.util.concurrent.TimeUnit.MINUTES; @@ -76,7 +77,7 @@ public class SegmentedRaftLog extends LifecycleAdapter implements RaftLog private State state; private final ReaderPool readerPool; - private JobScheduler.JobHandle readerPoolPruner; + private JobHandle readerPoolPruner; public SegmentedRaftLog( FileSystemAbstraction fileSystem, File directory, long rotateAtSize, ChannelMarshal contentMarshal, LogProvider logProvider, int readerPoolSize, Clock clock, diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/consensus/membership/MembershipWaiter.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/consensus/membership/MembershipWaiter.java index 406ac9100b8d4..f55aaf32ad797 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/consensus/membership/MembershipWaiter.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/consensus/membership/MembershipWaiter.java @@ -33,6 +33,7 @@ import org.neo4j.kernel.monitoring.Monitors; import org.neo4j.logging.Log; import org.neo4j.logging.LogProvider; +import org.neo4j.scheduler.JobHandle; import org.neo4j.scheduler.JobScheduler; import static java.util.concurrent.TimeUnit.MILLISECONDS; @@ -90,7 +91,7 @@ CompletableFuture waitUntilCaughtUpMember( RaftMachine raft ) Evaluator evaluator = new Evaluator( raft, catchUpFuture, dbHealthSupplier ); - JobScheduler.JobHandle jobHandle = jobScheduler.schedule( + JobHandle jobHandle = jobScheduler.schedule( JobScheduler.Groups.membershipWaiter, evaluator, currentCatchupDelayInMs, MILLISECONDS ); diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/consensus/schedule/Timer.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/consensus/schedule/Timer.java index 567f70e051599..c792e0bc13740 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/consensus/schedule/Timer.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/consensus/schedule/Timer.java @@ -24,6 +24,8 @@ import org.neo4j.causalclustering.core.consensus.schedule.TimerService.TimerName; import org.neo4j.logging.Log; +import org.neo4j.scheduler.Group; +import org.neo4j.scheduler.JobHandle; import org.neo4j.scheduler.JobScheduler; import static java.lang.String.format; @@ -39,12 +41,12 @@ public class Timer private final TimerName name; private final JobScheduler scheduler; private final Log log; - private final JobScheduler.Group group; + private final Group group; private final TimeoutHandler handler; private Timeout timeout; private Delay delay; - private JobScheduler.JobHandle job; + private JobHandle job; private long activeJobId; /** @@ -55,7 +57,7 @@ public class Timer * @param group The scheduler group used. * @param handler The timeout handler. */ - Timer( TimerName name, JobScheduler scheduler, Log log, JobScheduler.Group group, TimeoutHandler handler ) + Timer( TimerName name, JobScheduler scheduler, Log log, Group group, TimeoutHandler handler ) { this.name = name; this.scheduler = scheduler; @@ -129,7 +131,7 @@ public synchronized void reset() */ public void cancel( CancelMode cancelMode ) { - JobScheduler.JobHandle job; + JobHandle job; synchronized ( this ) { diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/consensus/schedule/TimerService.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/consensus/schedule/TimerService.java index 8df2b809e7ce5..cbdb451d18d7f 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/consensus/schedule/TimerService.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/consensus/schedule/TimerService.java @@ -28,6 +28,7 @@ import org.neo4j.logging.Log; import org.neo4j.logging.LogProvider; +import org.neo4j.scheduler.Group; import org.neo4j.scheduler.JobScheduler; /** @@ -54,7 +55,7 @@ public TimerService( JobScheduler scheduler, LogProvider logProvider ) * @param handler The handler invoked on a timeout. * @return The deactivated timer. */ - public synchronized Timer create( TimerName name, JobScheduler.Group group, TimeoutHandler handler ) + public synchronized Timer create( TimerName name, Group group, TimeoutHandler handler ) { Timer timer = new Timer( name, scheduler, log, group, handler ); timers.add( timer ); diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/state/CoreLife.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/state/CoreLife.java index a0cc6d166f201..3990af2ad4ed5 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/state/CoreLife.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/state/CoreLife.java @@ -33,7 +33,7 @@ import org.neo4j.causalclustering.identity.ClusterBinder; import org.neo4j.causalclustering.messaging.LifecycleMessageHandler; import org.neo4j.kernel.lifecycle.SafeLifecycle; -import org.neo4j.scheduler.JobScheduler; +import org.neo4j.scheduler.JobHandle; public class CoreLife extends SafeLifecycle { @@ -84,7 +84,7 @@ public void start0() throws Throwable else { snapshotService.awaitState(); - Optional downloadJob = downloadService.downloadJob(); + Optional downloadJob = downloadService.downloadJob(); if ( downloadJob.isPresent() ) { downloadJob.get().waitTermination(); diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/state/RaftMessageApplier.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/state/RaftMessageApplier.java index 6da31becd5796..8470b112d6008 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/state/RaftMessageApplier.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/state/RaftMessageApplier.java @@ -34,7 +34,7 @@ import org.neo4j.causalclustering.messaging.LifecycleMessageHandler; import org.neo4j.logging.Log; import org.neo4j.logging.LogProvider; -import org.neo4j.scheduler.JobScheduler; +import org.neo4j.scheduler.JobHandle; public class RaftMessageApplier implements LifecycleMessageHandler> { @@ -64,7 +64,7 @@ public synchronized void handle( RaftMessages.ReceivedInstantClusterIdAwareMessa ConsensusOutcome outcome = raftMachine.handle( wrappedMessage.message() ); if ( outcome.needsFreshSnapshot() ) { - Optional downloadJob = downloadService.scheduleDownload( catchupAddressProvider ); + Optional downloadJob = downloadService.scheduleDownload( catchupAddressProvider ); if ( downloadJob.isPresent() ) { downloadJob.get().waitTermination(); diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/state/snapshot/CoreStateDownloaderService.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/state/snapshot/CoreStateDownloaderService.java index 5056ca7b733c2..91321020c1eea 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/state/snapshot/CoreStateDownloaderService.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/state/snapshot/CoreStateDownloaderService.java @@ -34,7 +34,7 @@ import org.neo4j.logging.Log; import org.neo4j.logging.LogProvider; import org.neo4j.scheduler.JobScheduler; -import org.neo4j.scheduler.JobScheduler.JobHandle; +import org.neo4j.scheduler.JobHandle; import static org.neo4j.scheduler.JobScheduler.Groups.downloadSnapshot; diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/discovery/HazelcastClient.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/discovery/HazelcastClient.java index e5d6be22fd71c..ee90adc76241f 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/discovery/HazelcastClient.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/discovery/HazelcastClient.java @@ -35,6 +35,7 @@ import org.neo4j.kernel.lifecycle.SafeLifecycle; import org.neo4j.logging.Log; import org.neo4j.logging.LogProvider; +import org.neo4j.scheduler.JobHandle; import org.neo4j.scheduler.JobScheduler; import static java.util.Collections.emptyMap; @@ -65,8 +66,8 @@ public class HazelcastClient extends SafeLifecycle implements TopologyService //TODO: Work out error handling in case cluster hosts change their dbName unexpectedly private final String dbName; - private JobScheduler.JobHandle keepAliveJob; - private JobScheduler.JobHandle refreshTopologyJob; + private JobHandle keepAliveJob; + private JobHandle refreshTopologyJob; /* cached data updated during each refresh */ private volatile CoreTopology coreTopology = CoreTopology.EMPTY; diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/discovery/HazelcastCoreTopologyService.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/discovery/HazelcastCoreTopologyService.java index 55dee53b9503f..2000ff14b3d77 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/discovery/HazelcastCoreTopologyService.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/discovery/HazelcastCoreTopologyService.java @@ -55,6 +55,7 @@ import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.monitoring.Monitors; import org.neo4j.logging.LogProvider; +import org.neo4j.scheduler.JobHandle; import org.neo4j.scheduler.JobScheduler; import static com.hazelcast.spi.properties.GroupProperty.INITIAL_MIN_CLUSTER_SIZE; @@ -90,7 +91,7 @@ public interface Monitor private final Monitor monitor; private final String localDBName; - private JobScheduler.JobHandle refreshJob; + private JobHandle refreshJob; private final AtomicReference leaderInfo = new AtomicReference<>( LeaderInfo.INITIAL ); private final AtomicReference> stepDownInfo = new AtomicReference<>( Optional.empty() ); @@ -296,7 +297,7 @@ private HazelcastInstance createHazelcastInstance() logConnectionInfo( initialMembers ); c.addListenerConfig( new ListenerConfig( new OurMembershipListener() ) ); - JobScheduler.JobHandle logJob = scheduler.schedule( JobScheduler.Groups.topologyHealth, HAZELCAST_IS_HEALTHY_TIMEOUT_MS, + JobHandle logJob = scheduler.schedule( JobScheduler.Groups.topologyHealth, HAZELCAST_IS_HEALTHY_TIMEOUT_MS, () -> log.warn( "The server has not been able to connect in a timely fashion to the " + "cluster. Please consult the logs for more details. Rebooting the server may " + "solve the problem." ) ); diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/helper/RobustJobSchedulerWrapper.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/helper/RobustJobSchedulerWrapper.java index 8994588ce7305..7e1a061154fae 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/helper/RobustJobSchedulerWrapper.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/helper/RobustJobSchedulerWrapper.java @@ -24,6 +24,8 @@ import org.neo4j.function.ThrowingAction; import org.neo4j.logging.Log; +import org.neo4j.scheduler.Group; +import org.neo4j.scheduler.JobHandle; import org.neo4j.scheduler.JobScheduler; import static java.util.concurrent.TimeUnit.MILLISECONDS; @@ -46,12 +48,12 @@ public RobustJobSchedulerWrapper( JobScheduler delegate, Log log ) this.log = log; } - public JobScheduler.JobHandle schedule( JobScheduler.Group group, long delayMillis, ThrowingAction action ) + public JobHandle schedule( Group group, long delayMillis, ThrowingAction action ) { return delegate.schedule( group, () -> withErrorHandling( action ), delayMillis, MILLISECONDS ); } - public JobScheduler.JobHandle scheduleRecurring( JobScheduler.Group group, long periodMillis, ThrowingAction action ) + public JobHandle scheduleRecurring( Group group, long periodMillis, ThrowingAction action ) { return delegate.scheduleRecurring( group, () -> withErrorHandling( action ), periodMillis, MILLISECONDS ); } diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/messaging/SenderService.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/messaging/SenderService.java index fa6bc290a53e6..1d979a0bf2772 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/messaging/SenderService.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/messaging/SenderService.java @@ -38,7 +38,7 @@ import org.neo4j.helpers.AdvertisedSocketAddress; import org.neo4j.helpers.NamedThreadFactory; import org.neo4j.helpers.collection.Pair; -import org.neo4j.scheduler.JobScheduler; +import org.neo4j.scheduler.JobHandle; import org.neo4j.kernel.lifecycle.LifecycleAdapter; import org.neo4j.logging.Log; import org.neo4j.logging.LogProvider; @@ -53,7 +53,7 @@ public class SenderService extends LifecycleAdapter implements Outbound { long count = counts.getOrDefault( name.name(), 0L ); diff --git a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/core/consensus/schedule/TimerServiceTest.java b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/core/consensus/schedule/TimerServiceTest.java index a9fcf0f587165..facee93d049b9 100644 --- a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/core/consensus/schedule/TimerServiceTest.java +++ b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/core/consensus/schedule/TimerServiceTest.java @@ -29,6 +29,7 @@ import org.neo4j.kernel.impl.scheduler.CentralJobScheduler; import org.neo4j.logging.FormattedLogProvider; import org.neo4j.logging.NullLogProvider; +import org.neo4j.scheduler.Group; import org.neo4j.scheduler.JobScheduler; import org.neo4j.test.FakeClockJobScheduler; @@ -48,7 +49,7 @@ public class TimerServiceTest { - private final JobScheduler.Group group = JobScheduler.Groups.raft; + private final Group group = JobScheduler.Groups.raft; private final TimeoutHandler handlerA = mock( TimeoutHandler.class ); private final TimeoutHandler handlerB = mock( TimeoutHandler.class ); diff --git a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/helper/RobustJobSchedulerWrapperTest.java b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/helper/RobustJobSchedulerWrapperTest.java index c6bf43d8fda46..8ea79549901b8 100644 --- a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/helper/RobustJobSchedulerWrapperTest.java +++ b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/helper/RobustJobSchedulerWrapperTest.java @@ -30,7 +30,7 @@ import java.util.concurrent.atomic.AtomicInteger; import org.neo4j.scheduler.JobScheduler; -import org.neo4j.scheduler.JobScheduler.JobHandle; +import org.neo4j.scheduler.JobHandle; import org.neo4j.kernel.impl.scheduler.CentralJobScheduler; import org.neo4j.kernel.lifecycle.LifeRule; import org.neo4j.logging.Log; diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/SlaveUpdatePuller.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/SlaveUpdatePuller.java index f51a620f4e4bf..5925515d3aa69 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/SlaveUpdatePuller.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/SlaveUpdatePuller.java @@ -45,8 +45,9 @@ import org.neo4j.kernel.impl.util.CappedLogger; import org.neo4j.logging.Log; import org.neo4j.logging.LogProvider; +import org.neo4j.scheduler.CancelListener; import org.neo4j.scheduler.JobScheduler; -import org.neo4j.scheduler.JobScheduler.JobHandle; +import org.neo4j.scheduler.JobHandle; import org.neo4j.util.concurrent.BinaryLatch; import static java.lang.System.currentTimeMillis; @@ -116,7 +117,7 @@ * * @see org.neo4j.kernel.ha.UpdatePuller */ -public class SlaveUpdatePuller implements Runnable, UpdatePuller, JobScheduler.CancelListener +public class SlaveUpdatePuller implements Runnable, UpdatePuller, CancelListener { public interface Monitor { diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/UpdatePullerScheduler.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/UpdatePullerScheduler.java index f9970a50c1db9..c877188e959f4 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/UpdatePullerScheduler.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/UpdatePullerScheduler.java @@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit; +import org.neo4j.scheduler.JobHandle; import org.neo4j.scheduler.JobScheduler; import org.neo4j.kernel.lifecycle.LifecycleAdapter; import org.neo4j.logging.Log; @@ -43,7 +44,7 @@ public class UpdatePullerScheduler extends LifecycleAdapter private final Log log; private final UpdatePuller updatePuller; private final long pullIntervalMillis; - private JobScheduler.JobHandle intervalJobHandle; + private JobHandle intervalJobHandle; public UpdatePullerScheduler( JobScheduler scheduler, LogProvider logProvider, UpdatePuller updatePullingThread, long pullIntervalMillis ) diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/ConversationSPI.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/ConversationSPI.java index d90e0fc56dc49..da62bd8e3064a 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/ConversationSPI.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/ConversationSPI.java @@ -23,7 +23,8 @@ package org.neo4j.kernel.ha.cluster; import org.neo4j.kernel.impl.locking.Locks; -import org.neo4j.scheduler.JobScheduler; +import org.neo4j.scheduler.Group; +import org.neo4j.scheduler.JobHandle; /** * Conversation part of HA master SPI. @@ -33,5 +34,5 @@ public interface ConversationSPI { Locks.Client acquireClient(); - JobScheduler.JobHandle scheduleRecurringJob( JobScheduler.Group group, long interval, Runnable job ); + JobHandle scheduleRecurringJob( Group group, long interval, Runnable job ); } diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/DefaultConversationSPI.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/DefaultConversationSPI.java index 87c5ffb791b15..0b2c7adabe9a4 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/DefaultConversationSPI.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/cluster/DefaultConversationSPI.java @@ -25,6 +25,8 @@ import java.util.concurrent.TimeUnit; import org.neo4j.kernel.impl.locking.Locks; +import org.neo4j.scheduler.Group; +import org.neo4j.scheduler.JobHandle; import org.neo4j.scheduler.JobScheduler; /** @@ -48,7 +50,7 @@ public Locks.Client acquireClient() } @Override - public JobScheduler.JobHandle scheduleRecurringJob( JobScheduler.Group group, long interval, Runnable job ) + public JobHandle scheduleRecurringJob( Group group, long interval, Runnable job ) { return jobScheduler.scheduleRecurring( group, job, interval, TimeUnit.MILLISECONDS); } diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/master/ConversationManager.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/master/ConversationManager.java index c7e2fcd949f4b..449a51347c42c 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/master/ConversationManager.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/master/ConversationManager.java @@ -30,7 +30,7 @@ import org.neo4j.function.Factory; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.ha.cluster.ConversationSPI; -import org.neo4j.scheduler.JobScheduler; +import org.neo4j.scheduler.JobHandle; import org.neo4j.kernel.impl.util.collection.ConcurrentAccessException; import org.neo4j.kernel.impl.util.collection.NoSuchEntryException; import org.neo4j.kernel.impl.util.collection.TimedRepository; @@ -65,7 +65,7 @@ public Conversation newInstance() }; TimedRepository conversations; - private JobScheduler.JobHandle staleReaperJob; + private JobHandle staleReaperJob; /** * Build conversation manager with default values for activity check interval and timeout addition. diff --git a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/com/master/ConversationManagerTest.java b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/com/master/ConversationManagerTest.java index 765f118d3ca14..ebbc4aa008e86 100644 --- a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/com/master/ConversationManagerTest.java +++ b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/com/master/ConversationManagerTest.java @@ -35,7 +35,8 @@ import org.neo4j.kernel.ha.HaSettings; import org.neo4j.kernel.ha.cluster.ConversationSPI; import org.neo4j.kernel.impl.util.collection.TimedRepository; -import org.neo4j.scheduler.JobScheduler; +import org.neo4j.scheduler.Group; +import org.neo4j.scheduler.JobHandle; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; @@ -58,25 +59,25 @@ public class ConversationManagerTest @Test public void testStart() { - JobScheduler.JobHandle reaperJobHandle = mock( JobScheduler.JobHandle.class ); + JobHandle reaperJobHandle = mock( JobHandle.class ); when( config.get( HaSettings.lock_read_timeout ) ).thenReturn( Duration.ofMillis( 1 ) ); - when( conversationSPI.scheduleRecurringJob( any( JobScheduler.Group.class ), any( Long.class ), + when( conversationSPI.scheduleRecurringJob( any( Group.class ), any( Long.class ), any( Runnable.class ) ) ).thenReturn( reaperJobHandle ); conversationManager = getConversationManager(); conversationManager.start(); assertNotNull( conversationManager.conversations ); - verify( conversationSPI ).scheduleRecurringJob(any( JobScheduler.Group.class ), any( Long.class ), + verify( conversationSPI ).scheduleRecurringJob(any( Group.class ), any( Long.class ), any( Runnable.class ) ); } @Test public void testStop() { - JobScheduler.JobHandle reaperJobHandle = mock( JobScheduler.JobHandle.class ); + JobHandle reaperJobHandle = mock( JobHandle.class ); when( config.get( HaSettings.lock_read_timeout ) ).thenReturn( Duration.ofMillis( 1 ) ); - when( conversationSPI.scheduleRecurringJob( any( JobScheduler.Group.class ), any( Long.class ), + when( conversationSPI.scheduleRecurringJob( any( Group.class ), any( Long.class ), any( Runnable.class ) ) ).thenReturn( reaperJobHandle ); conversationManager = getConversationManager(); diff --git a/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/pagecache/WarmupAvailabilityListener.java b/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/pagecache/WarmupAvailabilityListener.java index 5d5c01607340e..0e24ed2477635 100644 --- a/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/pagecache/WarmupAvailabilityListener.java +++ b/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/pagecache/WarmupAvailabilityListener.java @@ -28,6 +28,7 @@ import org.neo4j.kernel.AvailabilityGuard.AvailabilityListener; import org.neo4j.kernel.configuration.Config; import org.neo4j.logging.Log; +import org.neo4j.scheduler.JobHandle; import org.neo4j.scheduler.JobScheduler; import static org.neo4j.scheduler.JobScheduler.Groups.pageCacheIOHelper; @@ -46,7 +47,7 @@ class WarmupAvailabilityListener implements AvailabilityListener // started yet, since we don't propagate an interrupt. This is why we check the `available` field in the // `scheduleProfile` method. private volatile boolean available; - private JobScheduler.JobHandle jobHandle; // Guarded by `this`. + private JobHandle jobHandle; // Guarded by `this`. WarmupAvailabilityListener( JobScheduler scheduler, PageCacheWarmer pageCacheWarmer, Config config, Log log, PageCacheWarmerMonitor monitor ) diff --git a/enterprise/security/src/main/java/org/neo4j/server/security/enterprise/auth/InternalFlatFileRealm.java b/enterprise/security/src/main/java/org/neo4j/server/security/enterprise/auth/InternalFlatFileRealm.java index ae6fbe38d71a3..8191ce20e033e 100644 --- a/enterprise/security/src/main/java/org/neo4j/server/security/enterprise/auth/InternalFlatFileRealm.java +++ b/enterprise/security/src/main/java/org/neo4j/server/security/enterprise/auth/InternalFlatFileRealm.java @@ -55,6 +55,7 @@ import org.neo4j.kernel.api.security.exception.InvalidAuthTokenException; import org.neo4j.kernel.impl.security.Credential; import org.neo4j.kernel.impl.security.User; +import org.neo4j.scheduler.JobHandle; import org.neo4j.scheduler.JobScheduler; import org.neo4j.server.security.auth.AuthenticationStrategy; import org.neo4j.server.security.auth.ListSnapshot; @@ -89,7 +90,7 @@ public class InternalFlatFileRealm extends AuthorizingRealm implements RealmLife private final boolean authenticationEnabled; private final boolean authorizationEnabled; private final JobScheduler jobScheduler; - private volatile JobScheduler.JobHandle reloadJobHandle; + private volatile JobHandle reloadJobHandle; public InternalFlatFileRealm( UserRepository userRepository, RoleRepository roleRepository, PasswordPolicy passwordPolicy, AuthenticationStrategy authenticationStrategy, diff --git a/enterprise/security/src/test/java/org/neo4j/server/security/enterprise/auth/InternalFlatFileRealmIT.java b/enterprise/security/src/test/java/org/neo4j/server/security/enterprise/auth/InternalFlatFileRealmIT.java index d4309c1c1bdf4..4f436f8317c8e 100644 --- a/enterprise/security/src/test/java/org/neo4j/server/security/enterprise/auth/InternalFlatFileRealmIT.java +++ b/enterprise/security/src/test/java/org/neo4j/server/security/enterprise/auth/InternalFlatFileRealmIT.java @@ -43,6 +43,8 @@ import org.neo4j.kernel.impl.scheduler.CentralJobScheduler; import org.neo4j.logging.LogProvider; import org.neo4j.logging.NullLogProvider; +import org.neo4j.scheduler.Group; +import org.neo4j.scheduler.JobHandle; import org.neo4j.server.security.auth.AuthenticationStrategy; import org.neo4j.server.security.auth.BasicPasswordPolicy; import org.neo4j.server.security.auth.CommunitySecurityModule; diff --git a/integrationtests/src/test/java/org/neo4j/auth/FlatFileStressBase.java b/integrationtests/src/test/java/org/neo4j/auth/FlatFileStressBase.java index bb19ec40cd206..76319121a89f2 100644 --- a/integrationtests/src/test/java/org/neo4j/auth/FlatFileStressBase.java +++ b/integrationtests/src/test/java/org/neo4j/auth/FlatFileStressBase.java @@ -43,6 +43,8 @@ import org.neo4j.kernel.lifecycle.LifecycleAdapter; import org.neo4j.logging.LogProvider; import org.neo4j.logging.NullLogProvider; +import org.neo4j.scheduler.Group; +import org.neo4j.scheduler.JobHandle; import org.neo4j.scheduler.JobScheduler; import org.neo4j.server.security.auth.BasicPasswordPolicy; import org.neo4j.server.security.auth.CommunitySecurityModule; diff --git a/stresstests/src/test/java/org/neo4j/kernel/stresstests/transaction/checkpoint/CheckPointingLogRotationStressTesting.java b/stresstests/src/test/java/org/neo4j/kernel/stresstests/transaction/checkpoint/CheckPointingLogRotationStressTesting.java index 53fe34318b774..8d13bdf8422fc 100644 --- a/stresstests/src/test/java/org/neo4j/kernel/stresstests/transaction/checkpoint/CheckPointingLogRotationStressTesting.java +++ b/stresstests/src/test/java/org/neo4j/kernel/stresstests/transaction/checkpoint/CheckPointingLogRotationStressTesting.java @@ -40,6 +40,8 @@ import org.neo4j.kernel.stresstests.transaction.checkpoint.tracers.TimerTransactionTracer; import org.neo4j.kernel.stresstests.transaction.checkpoint.workload.Workload; import org.neo4j.logging.NullLogProvider; +import org.neo4j.scheduler.Group; +import org.neo4j.scheduler.JobHandle; import org.neo4j.scheduler.JobScheduler; import org.neo4j.scheduler.JobSchedulerAdapter; import org.neo4j.test.TestGraphDatabaseFactory;