Package com.google.gerrit.server.git
Class WorkQueue
- java.lang.Object
-
- com.google.gerrit.server.git.WorkQueue
-
public class WorkQueue extends Object
Delayed execution of tasks using a background thread pool.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
WorkQueue.CancelableRunnable
Runnable needing to know it was canceled.static interface
WorkQueue.CanceledWhileRunning
Base interface handles the case when task was canceled before actual execution and in case it was started cancel method is not called yet the task itself will be destroyed anyway (it will result in resource opening errors).static class
WorkQueue.Lifecycle
static class
WorkQueue.Module
static class
WorkQueue.ProjectTask<V>
Same as Task class, but with a reference to ProjectRunnable, used to retrieve the project name from the operation queuedstatic class
WorkQueue.Task<V>
A wrapper around a scheduled Runnable, as maintained in the queue.
-
Constructor Summary
Constructors Constructor Description WorkQueue(IdGenerator idGenerator, int defaultThreadPoolSize, com.google.gerrit.metrics.MetricMaker metrics)
Constructor to allow binding the WorkQueue more explicitly in a vhost setup.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ScheduledExecutorService
createQueue(int poolsize, String queueName)
Create a new executor queue.ScheduledThreadPoolExecutor
createQueue(int poolsize, String queueName, boolean withMetrics)
Create a new executor queue, with default priority, optionally with metrics.ScheduledThreadPoolExecutor
createQueue(int poolsize, String queueName, int threadPriority, boolean withMetrics)
Create a new executor queue, optionally with metrics.ScheduledExecutorService
getDefaultQueue()
Get the default work queue, for miscellaneous tasks.ScheduledThreadPoolExecutor
getExecutor(String queueName)
WorkQueue.Task<?>
getTask(int id)
Locate a task by its unique id, null if no task matches.<T> List<T>
getTaskInfos(TaskInfoFactory<T> factory)
List<WorkQueue.Task<?>>
getTasks()
Get all of the tasks currently scheduled in any work queue.void
scheduleAtFixedRate(Runnable command, ScheduleConfig.Schedule schedule)
Executes a periodic command at a fixed schedule on the default queue.
-
-
-
Constructor Detail
-
WorkQueue
public WorkQueue(IdGenerator idGenerator, int defaultThreadPoolSize, com.google.gerrit.metrics.MetricMaker metrics)
Constructor to allow binding the WorkQueue more explicitly in a vhost setup.
-
-
Method Detail
-
getDefaultQueue
public ScheduledExecutorService getDefaultQueue()
Get the default work queue, for miscellaneous tasks.
-
createQueue
public ScheduledExecutorService createQueue(int poolsize, String queueName)
Create a new executor queue.Creates a new executor queue without associated metrics. This method is suitable for use by plugins.
If metrics are needed, use
createQueue(int, String, int, boolean)
instead.- Parameters:
poolsize
- the size of the pool.queueName
- the name of the queue.
-
createQueue
public ScheduledThreadPoolExecutor createQueue(int poolsize, String queueName, boolean withMetrics)
Create a new executor queue, with default priority, optionally with metrics.Creates a new executor queue, optionally with associated metrics. Metrics should not be requested for queues created by plugins.
- Parameters:
poolsize
- the size of the pool.queueName
- the name of the queue.withMetrics
- whether to create metrics.
-
createQueue
public ScheduledThreadPoolExecutor createQueue(int poolsize, String queueName, int threadPriority, boolean withMetrics)
Create a new executor queue, optionally with metrics.Creates a new executor queue, optionally with associated metrics. Metrics should not be requested for queues created by plugins.
- Parameters:
poolsize
- the size of the pool.queueName
- the name of the queue.threadPriority
- thread priority.withMetrics
- whether to create metrics.
-
scheduleAtFixedRate
public void scheduleAtFixedRate(Runnable command, ScheduleConfig.Schedule schedule)
Executes a periodic command at a fixed schedule on the default queue.
-
getTasks
public List<WorkQueue.Task<?>> getTasks()
Get all of the tasks currently scheduled in any work queue.
-
getTaskInfos
public <T> List<T> getTaskInfos(TaskInfoFactory<T> factory)
-
getTask
public WorkQueue.Task<?> getTask(int id)
Locate a task by its unique id, null if no task matches.
-
getExecutor
public ScheduledThreadPoolExecutor getExecutor(String queueName)
-
-