Class DefaultLongRunningTaskManager

java.lang.Object
com.atlassian.confluence.util.longrunning.DefaultLongRunningTaskManager
All Implemented Interfaces:
LongRunningTaskManagerInternal, LongRunningTaskManager, org.springframework.beans.factory.DisposableBean, org.springframework.beans.factory.InitializingBean

@FieldsAreNonnullByDefault @ParametersAreNonnullByDefault @ReturnValuesAreNonnullByDefault public class DefaultLongRunningTaskManager extends Object implements LongRunningTaskManagerInternal, org.springframework.beans.factory.InitializingBean, org.springframework.beans.factory.DisposableBean
  • Constructor Details

    • DefaultLongRunningTaskManager

      public DefaultLongRunningTaskManager(PermissionManager permissionManager, ActivityMonitor activityMonitor, LongRunningTaskMonitor longRunningTaskMonitor, com.atlassian.event.api.EventListenerRegistrar eventListenerRegistrar)
      Since:
      5.7
  • Method Details

    • afterPropertiesSet

      public void afterPropertiesSet() throws Exception
      Specified by:
      afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
      Throws:
      Exception
    • onApplicationStopped

      @EventListener public void onApplicationStopped(ApplicationStoppedEvent e)
    • startIfQueued

      public void startIfQueued(LongRunningTaskId taskId)
      Description copied from interface: LongRunningTaskManagerInternal
      Starts the task in a new thread if it has previously been queued.
      Specified by:
      startIfQueued in interface LongRunningTaskManagerInternal
      Parameters:
      taskId - the ID of the task
    • startLongRunningTask

      public LongRunningTaskId startLongRunningTask(@Nullable com.atlassian.user.User user, com.atlassian.core.task.longrunning.LongRunningTask task)
      Description copied from interface: LongRunningTaskManager
      Start some task in a new thread
      Specified by:
      startLongRunningTask in interface LongRunningTaskManager
      Parameters:
      user - the user responsible for the task
      task - the task to perform
      Returns:
      an ID that can be used to look up the task
    • runToCompletion

      public void runToCompletion(@Nullable com.atlassian.user.User user, com.atlassian.core.task.longrunning.LongRunningTask task)
      Description copied from interface: LongRunningTaskManagerInternal
      Starts a LongRunningTask and waits for it to complete.
      Specified by:
      runToCompletion in interface LongRunningTaskManagerInternal
      Parameters:
      user - the user responsible for the task
      task - the task to perform
    • getLongRunningTask

      public @Nullable com.atlassian.core.task.longrunning.LongRunningTask getLongRunningTask(@Nullable com.atlassian.user.User user, LongRunningTaskId taskId)
      gets a long running task with the given Id that was registered either by this user or the anonymous user.
      Specified by:
      getLongRunningTask in interface LongRunningTaskManager
      Parameters:
      user - the user responsible for the task
      taskId - the ID of the task
      Returns:
      the task, or null if no task is registered with that ID and user
    • getAllTasks

      public Map<LongRunningTaskId,com.atlassian.core.task.longrunning.LongRunningTask> getAllTasks(@Nullable ConfluenceUser asUser)
      Description copied from interface: LongRunningTaskManagerInternal
      Get all currently-tracked tasks that the specified user can see.
      Specified by:
      getAllTasks in interface LongRunningTaskManagerInternal
    • getTaskCount

      public int getTaskCount()
      Description copied from interface: LongRunningTaskManagerInternal
      Return a count of the current queued and running tasks. The count may include tasks that the current user is not allowed to see.
      Specified by:
      getTaskCount in interface LongRunningTaskManagerInternal
    • stopTrackingLongRunningTask

      public void stopTrackingLongRunningTask(LongRunningTaskId taskId)
      Description copied from interface: LongRunningTaskManager
      Clean up an old task. The manager hangs on to tasks that have been completed so their status can be queried. Calling this method will remove the task from the manager entirely.

      This method does not stop a task from being executed. If the task is already running it will continue to completion, you just won't be able to query its status any more.

      Specified by:
      stopTrackingLongRunningTask in interface LongRunningTaskManager
      Parameters:
      taskId - the ID of the task to remove.
    • destroy

      public void destroy()
      Specified by:
      destroy in interface org.springframework.beans.factory.DisposableBean
    • stop

      public void stop(long timeout, TimeUnit unit) throws TimeoutException
      Description copied from interface: LongRunningTaskManager
      Stop accepting new long running tasks. All tasks that have previously been submitted will be run to completion. If this takes longer than the timeout, the method will throw an exception and the task manager will resume normal operation accepting new tasks.
      Specified by:
      stop in interface LongRunningTaskManager
      Parameters:
      timeout - the time to wait for running tasks to complete
      unit - the unit of measurement for the timeout parameter
      Throws:
      TimeoutException - if the timeout is exceeded
    • resume

      public void resume()
      Description copied from interface: LongRunningTaskManager
      Resume accepting long-running tasks after LongRunningTaskManager.stop(java.time.Duration) has been called. If the long-running task manager is not stopped, this method will whistle quietly to itself and do nothing.
      Specified by:
      resume in interface LongRunningTaskManager
    • taskFinished

      protected void taskFinished(LongRunningTaskId taskId)