Class SqlTaskManager

java.lang.Object
io.trino.execution.SqlTaskManager
All Implemented Interfaces:
Closeable, AutoCloseable

public class SqlTaskManager extends Object implements Closeable
  • Constructor Details

  • Method Details

    • start

      @PostConstruct public void start()
    • close

      @PreDestroy public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
    • getIoStats

      public SqlTaskIoStats getIoStats()
    • getTaskNotificationExecutor

      public io.airlift.concurrent.ThreadPoolExecutorMBean getTaskNotificationExecutor()
    • getFailedTasks

      public io.airlift.stats.CounterStat getFailedTasks()
    • getAllTasks

      public List<SqlTask> getAllTasks()
    • getAllTaskInfo

      public List<TaskInfo> getAllTaskInfo()
      Gets all of the currently tracked tasks. This will included uninitialized, running, and completed tasks.
    • getTaskInfo

      public TaskInfo getTaskInfo(TaskId taskId)
      Gets the info for the specified task. If the task has not been created yet, an uninitialized task is created and the info is returned.

      NOTE: this design assumes that only tasks that will eventually exist are queried.

    • getTaskStatus

      public TaskStatus getTaskStatus(TaskId taskId)
      Gets the status for the specified task.
    • getTaskInfo

      public com.google.common.util.concurrent.ListenableFuture<TaskInfo> getTaskInfo(TaskId taskId, long currentVersion)
      Gets future info for the task after the state changes from current state. If the task has not been created yet, an uninitialized task is created and the future is returned. If the task is already in a final state, the info is returned immediately.

      NOTE: this design assumes that only tasks that will eventually exist are queried.

    • getTaskStatus

      public com.google.common.util.concurrent.ListenableFuture<TaskStatus> getTaskStatus(TaskId taskId, long currentVersion)
      Gets future status for the task after the state changes from current state. If the task has not been created yet, an uninitialized task is created and the future is returned. If the task is already in a final state, the status is returned immediately.

      NOTE: this design assumes that only tasks that will eventually exist are queried.

    • acknowledgeAndGetNewDynamicFilterDomains

      public DynamicFiltersCollector.VersionedDynamicFilterDomains acknowledgeAndGetNewDynamicFilterDomains(TaskId taskId, long currentDynamicFiltersVersion)
    • pruneCatalogs

      public void pruneCatalogs(Set<CatalogHandle> activeCatalogs)
    • updateTask

      public TaskInfo updateTask(Session session, TaskId taskId, io.opentelemetry.api.trace.Span stageSpan, Optional<PlanFragment> fragment, List<SplitAssignment> splitAssignments, OutputBuffers outputBuffers, Map<DynamicFilterId,Domain> dynamicFilterDomains, boolean speculative)
      Updates the task plan, splitAssignments and output buffers. If the task does not already exist, it is created and then updated.
    • getTaskResults

      public SqlTaskManager.SqlTaskWithResults getTaskResults(TaskId taskId, PipelinedOutputBuffers.OutputBufferId bufferId, long startingSequenceId, io.airlift.units.DataSize maxSize)
      Gets results from a task either immediately or in the future. If the task or buffer has not been created yet, an uninitialized task is created and a future is returned.

      NOTE: this design assumes that only tasks and buffers that will eventually exist are queried.

    • acknowledgeTaskResults

      public void acknowledgeTaskResults(TaskId taskId, PipelinedOutputBuffers.OutputBufferId bufferId, long sequenceId)
      Acknowledges previously received results.
    • destroyTaskResults

      public TaskInfo destroyTaskResults(TaskId taskId, PipelinedOutputBuffers.OutputBufferId bufferId)
      Aborts a result buffer for a task. If the task or buffer has not been created yet, an uninitialized task is created and a the buffer is aborted.

      NOTE: this design assumes that only tasks and buffers that will eventually exist are queried.

    • cancelTask

      public TaskInfo cancelTask(TaskId taskId)
      Cancels a task. If the task does not already exist, it is created and then canceled.
    • abortTask

      public TaskInfo abortTask(TaskId taskId)
      Aborts a task. If the task does not already exist, it is created and then aborted.
    • failTask

      public TaskInfo failTask(TaskId taskId, Throwable failure)
      Fail a task. If the task does not already exist, it is created and then failed.
    • addStateChangeListener

      public void addStateChangeListener(TaskId taskId, StateMachine.StateChangeListener<TaskState> stateChangeListener)
      Adds a state change listener to the specified task. Listener is always notified asynchronously using a dedicated notification thread pool so, care should be taken to avoid leaking this when adding a listener in a constructor. Additionally, it is possible notifications are observed out of order due to the asynchronous execution.
    • addSourceTaskFailureListener

      public void addSourceTaskFailureListener(TaskId taskId, TaskFailureListener listener)
      Add a listener that notifies about failures of any source tasks for a given task
    • getTraceToken

      public Optional<String> getTraceToken(TaskId taskId)
      Return trace token for a given task (see Session#traceToken)
    • getQueryContext

      public QueryContext getQueryContext(QueryId queryId)
    • failStuckSplitTasks

      public void failStuckSplitTasks()