Merge "WorkQueue: Add a convenience method for scheduling a periodic background job"
This commit is contained in:
@@ -26,8 +26,6 @@ import com.google.gerrit.server.query.account.InternalAccountQuery;
|
|||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.google.inject.Provider;
|
import com.google.inject.Provider;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.concurrent.Future;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import org.eclipse.jgit.lib.Config;
|
import org.eclipse.jgit.lib.Config;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@@ -63,15 +61,7 @@ public class AccountDeactivator implements Runnable {
|
|||||||
if (!supportAutomaticAccountActivityUpdate) {
|
if (!supportAutomaticAccountActivityUpdate) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
schedule.ifPresent(
|
schedule.ifPresent(s -> queue.scheduleAtFixedRate(deactivator, s));
|
||||||
s -> {
|
|
||||||
@SuppressWarnings("unused")
|
|
||||||
Future<?> possiblyIgnoredError =
|
|
||||||
queue
|
|
||||||
.getDefaultQueue()
|
|
||||||
.scheduleAtFixedRate(
|
|
||||||
deactivator, s.initialDelay(), s.interval(), TimeUnit.MILLISECONDS);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -25,8 +25,6 @@ import com.google.gerrit.server.util.ManualRequestContext;
|
|||||||
import com.google.gerrit.server.util.OneOffRequestContext;
|
import com.google.gerrit.server.util.OneOffRequestContext;
|
||||||
import com.google.gwtorm.server.OrmException;
|
import com.google.gwtorm.server.OrmException;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import java.util.concurrent.Future;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@@ -55,16 +53,7 @@ public class ChangeCleanupRunner implements Runnable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void start() {
|
public void start() {
|
||||||
cfg.getSchedule()
|
cfg.getSchedule().ifPresent(s -> queue.scheduleAtFixedRate(runner, s));
|
||||||
.ifPresent(
|
|
||||||
s -> {
|
|
||||||
@SuppressWarnings("unused")
|
|
||||||
Future<?> possiblyIgnoredError =
|
|
||||||
queue
|
|
||||||
.getDefaultQueue()
|
|
||||||
.scheduleAtFixedRate(
|
|
||||||
runner, s.initialDelay(), s.interval(), TimeUnit.MILLISECONDS);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -19,8 +19,6 @@ import com.google.gerrit.extensions.events.LifecycleListener;
|
|||||||
import com.google.gerrit.server.config.GcConfig;
|
import com.google.gerrit.server.config.GcConfig;
|
||||||
import com.google.gerrit.server.project.ProjectCache;
|
import com.google.gerrit.server.project.ProjectCache;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import java.util.concurrent.Future;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@@ -42,17 +40,7 @@ public class GarbageCollectionRunner implements Runnable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void start() {
|
public void start() {
|
||||||
gcConfig
|
gcConfig.getSchedule().ifPresent(s -> queue.scheduleAtFixedRate(gcRunner, s));
|
||||||
.getSchedule()
|
|
||||||
.ifPresent(
|
|
||||||
s -> {
|
|
||||||
@SuppressWarnings("unused")
|
|
||||||
Future<?> possiblyIgnoredError =
|
|
||||||
queue
|
|
||||||
.getDefaultQueue()
|
|
||||||
.scheduleAtFixedRate(
|
|
||||||
gcRunner, s.initialDelay(), s.interval(), TimeUnit.MILLISECONDS);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import com.google.gerrit.extensions.events.LifecycleListener;
|
|||||||
import com.google.gerrit.lifecycle.LifecycleModule;
|
import com.google.gerrit.lifecycle.LifecycleModule;
|
||||||
import com.google.gerrit.reviewdb.client.Project;
|
import com.google.gerrit.reviewdb.client.Project;
|
||||||
import com.google.gerrit.server.config.GerritServerConfig;
|
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.gerrit.server.util.IdGenerator;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.google.inject.Singleton;
|
import com.google.inject.Singleton;
|
||||||
@@ -130,6 +131,15 @@ public class WorkQueue {
|
|||||||
return executor;
|
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. */
|
/** Get all of the tasks currently scheduled in any work queue. */
|
||||||
public List<Task<?>> getTasks() {
|
public List<Task<?>> getTasks() {
|
||||||
final List<Task<?>> r = new ArrayList<>();
|
final List<Task<?>> r = new ArrayList<>();
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ import com.google.gerrit.server.group.db.GroupNameNotes;
|
|||||||
import com.google.gerrit.server.index.group.GroupIndexer;
|
import com.google.gerrit.server.index.group.GroupIndexer;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.google.inject.Provider;
|
import com.google.inject.Provider;
|
||||||
import java.util.concurrent.Future;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import org.eclipse.jgit.lib.Config;
|
import org.eclipse.jgit.lib.Config;
|
||||||
import org.eclipse.jgit.lib.Repository;
|
import org.eclipse.jgit.lib.Repository;
|
||||||
@@ -98,12 +97,7 @@ public class PeriodicGroupIndexer implements Runnable {
|
|||||||
.setSubsection("scheduledIndexer")
|
.setSubsection("scheduledIndexer")
|
||||||
.buildSchedule()
|
.buildSchedule()
|
||||||
.orElseGet(() -> Schedule.createOrFail(TimeUnit.MINUTES.toMillis(5), "00:00"));
|
.orElseGet(() -> Schedule.createOrFail(TimeUnit.MINUTES.toMillis(5), "00:00"));
|
||||||
@SuppressWarnings("unused")
|
queue.scheduleAtFixedRate(runner, schedule);
|
||||||
Future<?> possiblyIgnoredError =
|
|
||||||
queue
|
|
||||||
.getDefaultQueue()
|
|
||||||
.scheduleAtFixedRate(
|
|
||||||
runner, schedule.initialDelay(), schedule.interval(), TimeUnit.MILLISECONDS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user