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