in spring-taskqueue/src/main/java/org/apache/archiva/redback/components/taskqueue/execution/ThreadedTaskQueueExecutor.java [84:146]
public void run()
{
while ( command != SHUTDOWN )
{
final Task task;
currentTask = null;
try
{
task = queue.poll( 100, TimeUnit.MILLISECONDS );
}
catch ( InterruptedException e )
{
logger.info( "Executor thread interrupted, command: {}", ( command == SHUTDOWN
? "Shutdown"
: command == CANCEL_TASK ? "Cancel task" : "Unknown" ) );
continue;
}
if ( task == null )
{
continue;
}
currentTask = task;
Future future = executorService.submit( new Runnable()
{
public void run()
{
try
{
executor.executeTask( task );
}
catch ( TaskExecutionException e )
{
logger.error( "Error executing task", e );
}
}
} );
try
{
waitForTask( task, future );
}
catch ( ExecutionException e )
{
logger.error( "Error executing task", e );
}
}
currentTask = null;
logger.info( "Executor thread '{}' exited.", name );
done = true;
synchronized ( this )
{
notifyAll();
}
}