WorkQueue: Add a convenience method for scheduling a periodic background job
This saves some common boilerplate code. Change-Id: I475bc2d31c32c2138f690ef455d0734e1fcfa074 Signed-off-by: Edwin Kempin <ekempin@google.com>
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.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 | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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<>(); | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Edwin Kempin
					Edwin Kempin