use of org.neo4j.kernel.impl.util.JobScheduler in project neo4j by neo4j.
the class SwitchToSlaveCopyThenBranchTest method updatesPulledAndPullingScheduledOnSwitchToSlave.
@Test
public void updatesPulledAndPullingScheduledOnSwitchToSlave() throws Throwable {
SwitchToSlaveCopyThenBranch switchToSlave = newSwitchToSlaveSpy();
when(fs.fileExists(any(File.class))).thenReturn(true);
JobScheduler jobScheduler = mock(JobScheduler.class);
LifeSupport communicationLife = mock(LifeSupport.class);
URI localhost = getLocalhostUri();
final UpdatePullerScheduler pullerScheduler = new UpdatePullerScheduler(jobScheduler, NullLogProvider.getInstance(), updatePuller, 10L);
when(pullerFactory.createUpdatePullerScheduler(updatePuller)).thenReturn(pullerScheduler);
// emulate lifecycle start call on scheduler
doAnswer(new Answer() {
@Override
public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
pullerScheduler.init();
return null;
}
}).when(communicationLife).start();
switchToSlave.switchToSlave(communicationLife, localhost, localhost, mock(CancellationRequest.class));
verify(updatePuller).tryPullUpdates();
verify(communicationLife).add(pullerScheduler);
verify(jobScheduler).scheduleRecurring(eq(JobScheduler.Groups.pullUpdates), any(Runnable.class), eq(10L), eq(10L), eq(TimeUnit.MILLISECONDS));
}
use of org.neo4j.kernel.impl.util.JobScheduler in project neo4j by neo4j.
the class RecordStorageEngineRule method get.
private RecordStorageEngine get(FileSystemAbstraction fs, PageCache pageCache, SchemaIndexProvider schemaIndexProvider, DatabaseHealth databaseHealth, File storeDirectory, Function<BatchTransactionApplierFacade, BatchTransactionApplierFacade> transactionApplierTransformer) {
if (!fs.fileExists(storeDirectory) && !fs.mkdir(storeDirectory)) {
throw new IllegalStateException();
}
IdGeneratorFactory idGeneratorFactory = new EphemeralIdGenerator.Factory();
LabelScanStoreProvider labelScanStoreProvider = nativeLabelScanStoreProvider(storeDirectory, fs, pageCache);
LegacyIndexProviderLookup legacyIndexProviderLookup = mock(LegacyIndexProviderLookup.class);
when(legacyIndexProviderLookup.all()).thenReturn(Iterables.empty());
IndexConfigStore indexConfigStore = new IndexConfigStore(storeDirectory, fs);
JobScheduler scheduler = life.add(new Neo4jJobScheduler());
Config config = Config.defaults();
Supplier<KernelTransactionsSnapshot> txSnapshotSupplier = () -> new KernelTransactionsSnapshot(Collections.emptySet(), 0);
return life.add(new ExtendedRecordStorageEngine(storeDirectory, config, idGeneratorFactory, IdReuseEligibility.ALWAYS, new CommunityIdTypeConfigurationProvider(), pageCache, fs, NullLogProvider.getInstance(), mock(PropertyKeyTokenHolder.class), mock(LabelTokenHolder.class), mock(RelationshipTypeTokenHolder.class), () -> {
}, new StandardConstraintSemantics(), scheduler, mock(TokenNameLookup.class), new ReentrantLockService(), schemaIndexProvider, IndexingService.NO_MONITOR, databaseHealth, labelScanStoreProvider, legacyIndexProviderLookup, indexConfigStore, new SynchronizedArrayIdOrderingQueue(20), txSnapshotSupplier, transactionApplierTransformer));
}
use of org.neo4j.kernel.impl.util.JobScheduler in project neo4j by neo4j.
the class IndexSamplingJobTrackerTest method shouldAcceptNewJobWhenRunningJobFinishes.
@Test(timeout = 5_000)
public void shouldAcceptNewJobWhenRunningJobFinishes() throws Throwable {
// Given
when(config.jobLimit()).thenReturn(1);
JobScheduler jobScheduler = new Neo4jJobScheduler();
jobScheduler.init();
final IndexSamplingJobTracker jobTracker = new IndexSamplingJobTracker(config, jobScheduler);
final DoubleLatch latch = new DoubleLatch();
final AtomicBoolean lastJobExecuted = new AtomicBoolean();
jobTracker.scheduleSamplingJob(new IndexSamplingJob() {
@Override
public long indexId() {
return indexId11;
}
@Override
public void run() {
latch.waitForAllToStart();
}
});
// When
Executors.newSingleThreadExecutor().execute(() -> {
jobTracker.waitUntilCanExecuteMoreSamplingJobs();
jobTracker.scheduleSamplingJob(new IndexSamplingJob() {
@Override
public long indexId() {
return indexId22;
}
@Override
public void run() {
lastJobExecuted.set(true);
latch.finish();
}
});
});
assertFalse(jobTracker.canExecuteMoreSamplingJobs());
latch.startAndWaitForAllToStart();
latch.waitForAllToFinish();
// Then
assertTrue(lastJobExecuted.get());
}
Aggregations