use of org.neo4j.scheduler.JobMonitoringParams in project neo4j by neo4j.
the class ThreadPoolTest method poolDoesNotLeakFastJobs.
@Test
void poolDoesNotLeakFastJobs() throws ExecutionException, InterruptedException {
// When
var fastJob = threadPool.submit(new JobMonitoringParams(null, null, null), () -> {
/* do nothing */
});
fastJob.waitTermination();
// Then
assertEquals(0, threadPool.activeJobCount(), "Active job count should be 0 when job is terminated");
}
use of org.neo4j.scheduler.JobMonitoringParams in project neo4j by neo4j.
the class GenericBlockBasedIndexPopulatorTest method setup.
@BeforeEach
void setup() {
IndexProviderDescriptor providerDescriptor = new IndexProviderDescriptor("test", "v1");
IndexDirectoryStructure directoryStructure = directoriesByProvider(directory.homePath()).forProvider(providerDescriptor);
indexFiles = new IndexFiles.Directory(fs, directoryStructure, INDEX_DESCRIPTOR.getId());
databaseIndexContext = DatabaseIndexContext.builder(pageCache, fs, DEFAULT_DATABASE_NAME).build();
jobScheduler = JobSchedulerFactory.createInitialisedScheduler();
populationWorkScheduler = new IndexPopulator.PopulationWorkScheduler() {
@Override
public <T> JobHandle<T> schedule(IndexPopulator.JobDescriptionSupplier descriptionSupplier, Callable<T> job) {
return jobScheduler.schedule(Group.INDEX_POPULATION_WORK, new JobMonitoringParams(null, null, null), job);
}
};
}
use of org.neo4j.scheduler.JobMonitoringParams in project neo4j by neo4j.
the class BlockBasedIndexPopulatorTest method shouldScheduleMergeOnJobSchedulerWithCorrectGroup.
@Test
void shouldScheduleMergeOnJobSchedulerWithCorrectGroup() throws IndexEntryConflictException, IOException {
// given
BlockBasedIndexPopulator<GenericKey, NativeIndexValue> populator = instantiatePopulator(NO_MONITOR);
boolean closed = false;
try {
populator.add(batchOfUpdates(), NULL);
// when
MutableBoolean called = new MutableBoolean();
JobScheduler trackingJobScheduler = new JobSchedulerAdapter() {
@Override
public <T> JobHandle<T> schedule(Group group, JobMonitoringParams jobMonitoringParams, Callable<T> job) {
called.setTrue();
assertThat(group).isSameAs(Group.INDEX_POPULATION_WORK);
return jobScheduler.schedule(group, jobMonitoringParams, job);
}
};
populator.scanCompleted(nullInstance, wrapScheduler(trackingJobScheduler), NULL);
assertTrue(called.booleanValue());
populator.close(true, NULL);
closed = true;
} finally {
if (!closed) {
populator.close(true, NULL);
}
}
}
use of org.neo4j.scheduler.JobMonitoringParams in project neo4j by neo4j.
the class IndexPopulationJob method getMonitoringParams.
public JobMonitoringParams getMonitoringParams() {
return new JobMonitoringParams(subject, databaseName, getMonitoringDescription(), () -> {
var stateDescriptionBuilder = new StringBuilder();
// because if there is only one, its name will already be in the job description
if (populatedIndexes.size() > 1) {
stateDescriptionBuilder.append("Population of indexes ");
boolean first = true;
for (var index : populatedIndexes) {
if (first) {
first = false;
} else {
stateDescriptionBuilder.append(",");
}
stateDescriptionBuilder.append("'").append(index.getIndexDescriptor().getName()).append("'");
}
stateDescriptionBuilder.append("; ");
}
PopulationProgress populationProgress = PopulationProgress.NONE;
if (storeScan != null) {
populationProgress = storeScan.getProgress();
}
stateDescriptionBuilder.append("Total progress: ").append(populationProgress.toIndexPopulationProgress().getCompletedPercentage()).append("%");
return stateDescriptionBuilder.toString();
});
}
use of org.neo4j.scheduler.JobMonitoringParams in project neo4j by neo4j.
the class PropertyStoreTraceIT method configure.
@ExtensionCallback
void configure(TestDatabaseManagementServiceBuilder builder) {
var dependencies = new Dependencies();
// disabling periodic id buffers maintenance jobs
dependencies.satisfyDependency(new CentralJobScheduler(Clocks.nanoClock()) {
@Override
public JobHandle<?> scheduleRecurring(Group group, JobMonitoringParams monitoredJobParams, Runnable runnable, long period, TimeUnit timeUnit) {
return JobHandle.EMPTY;
}
@Override
public JobHandle<?> scheduleRecurring(Group group, JobMonitoringParams monitoredJobParams, Runnable runnable, long initialDelay, long period, TimeUnit unit) {
return JobHandle.EMPTY;
}
});
builder.setExternalDependencies(dependencies);
}
Aggregations