|
2.17.2: 2011-06-17 | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object java.util.TimerTask net.sf.basedb.core.InternalJobQueue
public final class InternalJobQueue
A simple implementation of a job queue that executes jobs
in order of priority and longest waiting time. To allow quick jobs
like importing raw data or reporters to run it is possible to
reserve slots per Job.ExecutionTime
setting. The configuration
is done in the base.config
file with the following settings:
Setting | Default/possible value(s) | Description |
---|---|---|
jobqueue.internal.enabled | true | false | If the internal job queue is enabled or not. Do not disable the job queue if you don't have another external job queue manager. It is possible to use both an external and internal job queue. |
jobqueue.internal.checkinterval | 30 | The interval, in seconds, that the job queue checks the database for new jobs. |
jobqueue.internal.maxthreadpriority | Thread.NORM_PRIORITY - 1 |
The maximum thread priority for the threads that execute jobs.
See Thread.setPriority(int) for possible values.
|
jobqueue.internal.shortest.threads | 1 | Number of threads to reserve for jobs with an estimated execution time of less than one minute. Jobs with this setting may also use threads from the other "slower" slots. |
jobqueue.internal.shortest.threadpriority | Thread.NORM_PRIORITY - 1 |
The thread priority to use when executing jobs in this slot.
See Thread.setPriority(int) for possible values.
|
jobqueue.internal.short.threads | 1 | Number of threads to reserve for jobs with an estimated execution time between one and ten minutes. Jobs with this setting may also use threads from the other "slower" slots. |
jobqueue.internal.short.threadpriority | Thread.NORM_PRIORITY - 1 |
The thread priority to use when executing jobs in this slot.
See Thread.setPriority(int) for possible values.
|
jobqueue.internal.medium.threads | 2 | Number of threads to reserve for jobs with an estimated execution time less than one hour. Jobs with this setting may also use threads from the other "slower" slots. |
jobqueue.internal.medium.threadpriority | Thread.NORM_PRIORITY - 2 |
The thread priority to use when executing jobs in this slot.
See Thread.setPriority(int) for possible values.
|
jobqueue.internal.long.threads | 4 | Number of threads to reserve for jobs with an estimated execution time more than one hour. Jobs with this setting may not use threads from the other slots. |
jobqueue.internal.long.threadpriority | Thread.NORM_PRIORITY - 2 |
The thread priority to use when executing jobs in this slot.
See Thread.setPriority(int) for possible values.
|
Nested Class Summary | |
---|---|
private static class |
InternalJobQueue.JobQueueKeyring
Our own keyring containing the permissions we need to execute the jobs. |
private class |
InternalJobQueue.JobRunner
Encapsulates the running of a job in a separate thread. |
Field Summary | |
---|---|
private int |
closeTimeout
Timeout to wait for jobs to act on the ABORT signal when shutting down BASE. |
private boolean |
ignoreUseInternalJobQueueFlag
If the PluginDefinitionData.getUseInternalJobQueue() setting
should be ignored or not. |
private static Logger |
log
Log job queue events. |
private Map<Job.ExecutionTime,Integer> |
maxSlots
The maximum number of threads that are allowed in each slot. |
private Map<Job.ExecutionTime,Integer> |
priorities
The thread priority to use when executing jobs in each slot. |
private Set<InternalJobQueue.JobRunner> |
runners
Holds all currently executing jobs. |
private ThreadGroup |
runnersGroup
The group were all job runners are placed. |
private SessionControl |
sc
The job queues session controller. |
private static SignalReceiver |
signalReceiver
Use the local signal receiver only. |
private Map<Job.ExecutionTime,Integer> |
usedSlots
The current number of threads executing in each slot. |
Constructor Summary | |
---|---|
InternalJobQueue()
Create the job queue. |
Method Summary | |
---|---|
(package private) void |
close()
Cleanup |
static SignalReceiver |
getSignalReceiver()
Get the signal receiver used by the internal job queue. |
private void |
jobDone(InternalJobQueue.JobRunner runner)
Called from a InternalJobQueue.JobRunner when it has finished
executing the job. |
void |
run()
Check the database for jobs that are waiting to be executed. |
private void |
sendErrorMessage(SessionControl impersonated,
int jobId,
Throwable ex)
|
Methods inherited from class java.util.TimerTask |
---|
cancel, scheduledExecutionTime |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private static final Logger log
private final SessionControl sc
InternalJobQueue.JobQueueKeyring
.
private final Map<Job.ExecutionTime,Integer> usedSlots
private final Map<Job.ExecutionTime,Integer> maxSlots
private final Map<Job.ExecutionTime,Integer> priorities
private final ThreadGroup runnersGroup
private final Set<InternalJobQueue.JobRunner> runners
private boolean ignoreUseInternalJobQueueFlag
PluginDefinitionData.getUseInternalJobQueue()
setting
should be ignored or not.
private int closeTimeout
private static SignalReceiver signalReceiver
Constructor Detail |
---|
InternalJobQueue()
Method Detail |
---|
public static SignalReceiver getSignalReceiver()
LocalSignalReceiver
is created on the first call to this method.
public void run()
InternalJobQueue.JobRunner
object which is started in it's own thread.
run
in interface Runnable
run
in class TimerTask
private void jobDone(InternalJobQueue.JobRunner runner)
InternalJobQueue.JobRunner
when it has finished
executing the job. IT MUST NEVER FORGET TO CALL THIS METHOD.
private void sendErrorMessage(SessionControl impersonated, int jobId, Throwable ex)
void close()
|
2.17.2: 2011-06-17 | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |