Merge "WorkQueue: Add a convenience method for scheduling a periodic background job"

This commit is contained in:
Alice Kober-Sotzek
2018-02-21 12:41:08 +00:00
committed by Gerrit Code Review
5 changed files with 14 additions and 43 deletions

View File

@@ -26,8 +26,6 @@ import com.google.gerrit.server.query.account.InternalAccountQuery;
import com.google.inject.Inject;
import com.google.inject.Provider;
import java.util.Optional;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import org.eclipse.jgit.lib.Config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -63,15 +61,7 @@ public class AccountDeactivator implements Runnable {
if (!supportAutomaticAccountActivityUpdate) {
return;
}
schedule.ifPresent(
s -> {
@SuppressWarnings("unused")
Future<?> possiblyIgnoredError =
queue
.getDefaultQueue()
.scheduleAtFixedRate(
deactivator, s.initialDelay(), s.interval(), TimeUnit.MILLISECONDS);
});
schedule.ifPresent(s -> queue.scheduleAtFixedRate(deactivator, s));
}
@Override

View File

@@ -25,8 +25,6 @@ import com.google.gerrit.server.util.ManualRequestContext;
import com.google.gerrit.server.util.OneOffRequestContext;
import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -55,16 +53,7 @@ public class ChangeCleanupRunner implements Runnable {
@Override
public void start() {
cfg.getSchedule()
.ifPresent(
s -> {
@SuppressWarnings("unused")
Future<?> possiblyIgnoredError =
queue
.getDefaultQueue()
.scheduleAtFixedRate(
runner, s.initialDelay(), s.interval(), TimeUnit.MILLISECONDS);
});
cfg.getSchedule().ifPresent(s -> queue.scheduleAtFixedRate(runner, s));
}
@Override

View File

@@ -19,8 +19,6 @@ import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.server.config.GcConfig;
import com.google.gerrit.server.project.ProjectCache;
import com.google.inject.Inject;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -42,17 +40,7 @@ public class GarbageCollectionRunner implements Runnable {
@Override
public void start() {
gcConfig
.getSchedule()
.ifPresent(
s -> {
@SuppressWarnings("unused")
Future<?> possiblyIgnoredError =
queue
.getDefaultQueue()
.scheduleAtFixedRate(
gcRunner, s.initialDelay(), s.interval(), TimeUnit.MILLISECONDS);
});
gcConfig.getSchedule().ifPresent(s -> queue.scheduleAtFixedRate(gcRunner, s));
}
@Override

View File

@@ -18,6 +18,7 @@ import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.lifecycle.LifecycleModule;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.config.ScheduleConfig.Schedule;
import com.google.gerrit.server.util.IdGenerator;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@@ -130,6 +131,15 @@ public class WorkQueue {
return executor;
}
/** Executes a periodic command at a fixed schedule on the default queue. */
public void scheduleAtFixedRate(Runnable command, Schedule schedule) {
@SuppressWarnings("unused")
Future<?> possiblyIgnoredError =
getDefaultQueue()
.scheduleAtFixedRate(
command, schedule.initialDelay(), schedule.interval(), TimeUnit.MILLISECONDS);
}
/** Get all of the tasks currently scheduled in any work queue. */
public List<Task<?>> getTasks() {
final List<Task<?>> r = new ArrayList<>();

View File

@@ -32,7 +32,6 @@ import com.google.gerrit.server.group.db.GroupNameNotes;
import com.google.gerrit.server.index.group.GroupIndexer;
import com.google.inject.Inject;
import com.google.inject.Provider;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.Repository;
@@ -98,12 +97,7 @@ public class PeriodicGroupIndexer implements Runnable {
.setSubsection("scheduledIndexer")
.buildSchedule()
.orElseGet(() -> Schedule.createOrFail(TimeUnit.MINUTES.toMillis(5), "00:00"));
@SuppressWarnings("unused")
Future<?> possiblyIgnoredError =
queue
.getDefaultQueue()
.scheduleAtFixedRate(
runner, schedule.initialDelay(), schedule.interval(), TimeUnit.MILLISECONDS);
queue.scheduleAtFixedRate(runner, schedule);
}
@Override