| | |
| | | * CDDL HEADER END |
| | | * |
| | | * |
| | | * Portions Copyright 2006 Sun Microsystems, Inc. |
| | | * Portions Copyright 2006-2007 Sun Microsystems, Inc. |
| | | */ |
| | | package org.opends.server.backends.task; |
| | | |
| | |
| | | import org.opends.server.api.DirectoryThread; |
| | | import org.opends.server.types.ErrorLogSeverity; |
| | | |
| | | import static org.opends.server.loggers.Debug.*; |
| | | import static org.opends.server.loggers.debug.DebugLogger.debugCought; |
| | | import static org.opends.server.loggers.debug.DebugLogger.debugEnabled; |
| | | import org.opends.server.types.DebugLogLevel; |
| | | import static org.opends.server.messages.BackendMessages.*; |
| | | import static org.opends.server.messages.MessageHandler.*; |
| | | import static org.opends.server.util.StaticUtils.*; |
| | |
| | | public class TaskThread |
| | | extends DirectoryThread |
| | | { |
| | | /** |
| | | * The fully-qualified name of this class for debugging purposes. |
| | | */ |
| | | private static final String CLASS_NAME = |
| | | "org.opends.server.backends.task.TaskThread"; |
| | | |
| | | |
| | | |
| | |
| | | { |
| | | super("Task Thread " + threadID); |
| | | |
| | | assert debugConstructor(CLASS_NAME, String.valueOf(taskScheduler), |
| | | String.valueOf(threadID)); |
| | | |
| | | this.taskScheduler = taskScheduler; |
| | | this.threadID = threadID; |
| | |
| | | */ |
| | | public Task getTask() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "getTask"); |
| | | |
| | | return task; |
| | | } |
| | |
| | | */ |
| | | public void setTask(Task task) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "setTask", String.valueOf(task)); |
| | | |
| | | this.task = task; |
| | | |
| | |
| | | public void interruptTask(TaskState interruptState, String interruptReason, |
| | | boolean exitThread) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "interruptTask", String.valueOf(exitThread)); |
| | | |
| | | if (task != null) |
| | | { |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | assert debugException(CLASS_NAME, "interruptTask", e); |
| | | if (debugEnabled()) |
| | | { |
| | | debugCought(DebugLogLevel.ERROR, e); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | */ |
| | | public void run() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "run"); |
| | | |
| | | while (! exitRequested) |
| | | { |
| | |
| | | } |
| | | catch (InterruptedException ie) |
| | | { |
| | | assert debugException(CLASS_NAME, "run", ie); |
| | | if (debugEnabled()) |
| | | { |
| | | debugCought(DebugLogLevel.ERROR, ie); |
| | | } |
| | | } |
| | | |
| | | continue; |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | assert debugException(CLASS_NAME, "run", e); |
| | | if (debugEnabled()) |
| | | { |
| | | debugCought(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | int msgID = MSGID_TASK_EXECUTE_FAILED; |
| | | String message = getMessage(msgID, |