Class ThreadJobExecutor
java.lang.Object
net.sf.basedb.clients.jobagent.executors.ThreadJobExecutor
- All Implemented Interfaces:
JobExecutor
This is a job executor which executes jobs in the current thread.
This has the disadvantage that a misbehaving job can
interfere with other jobs and the job agent. For example, a
call to
System.exit(int)
would result in
all other jobs as well as the job agent getting killed.
The advantage is that there is no overhead in time or memory.
- Version:
- 2.0
- Author:
- nicklas
- Last modified
- $Date: 2021-06-04 12:40:45 +0200 (Fri, 04 Jun 2021) $
-
Nested Class Summary
-
Field Summary
Modifier and TypeFieldDescriptionprivate static final Logger
Log job agent events.private SignalReceiver
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
This method is called at when the agent is stopped or paused.void
executeJob
(SessionControl sc, Agent agent, Job job, JobAgentSettings settings, Job.ExecutionTime usedSlot) Execute the specified job.void
Initialize the job executor.static void
private void
setSignalReceiver
(SignalReceiver signalReceiver)
-
Field Details
-
log
Log job agent events. -
signalReceiver
-
-
Constructor Details
-
ThreadJobExecutor
public ThreadJobExecutor()
-
-
Method Details
-
init
Description copied from interface:JobExecutor
Initialize the job executor. This method is called once immediately after the object has been created.- Specified by:
init
in interfaceJobExecutor
- Parameters:
agent
- The agent
-
executeJob
public void executeJob(SessionControl sc, Agent agent, Job job, JobAgentSettings settings, Job.ExecutionTime usedSlot) Description copied from interface:JobExecutor
Execute the specified job. This method is called in a new thread created specifically for running that job. If the agent is shutting down it will send an interrupt signal to all job threads. It is up to the job executor to decide how to handle this. It may either decide to kill the job or let it continue as if nothing happened.The job sent to this method has it's status set to
Job.Status.PREPARED
. The implementation of this method must change the status to eitherJob.Status.DONE
orJob.Status.ERROR
. If the status hasn't changed the job agent will set the status to signal an unknown error.- Specified by:
executeJob
in interfaceJobExecutor
- Parameters:
sc
- ASessionControl
where the owner of the job is logged in and the correct active project is setagent
- The agent that sent the request to execute the jobjob
- The job to executesettings
- The specific settings used for the plugin on this job agent or null if no settings has been specifiedusedSlot
- The slot that was used to execut the job
-
close
public void close()Description copied from interface:JobExecutor
This method is called at when the agent is stopped or paused. No more execution requests will be sent to the current job executor, but running jobs should NOT be terminated due to this method beeing called.- Specified by:
close
in interfaceJobExecutor
-
setSignalReceiver
-
main
-