Package io.trino.server.remotetask
Class HttpRemoteTask
java.lang.Object
io.trino.server.remotetask.HttpRemoteTask
- All Implemented Interfaces:
RemoteTask
-
Constructor Summary
ConstructorsConstructorDescriptionHttpRemoteTask(Session session, io.opentelemetry.api.trace.Span stageSpan, TaskId taskId, InternalNode node, boolean speculative, URI location, PlanFragment planFragment, com.google.common.collect.Multimap<PlanNodeId, Split> initialSplits, OutputBuffers outputBuffers, io.airlift.http.client.HttpClient httpClient, Executor executor, ScheduledExecutorService updateScheduledExecutor, ScheduledExecutorService errorScheduledExecutor, io.airlift.units.Duration maxErrorDuration, io.airlift.units.Duration taskStatusRefreshMaxWait, io.airlift.units.Duration taskInfoUpdateInterval, io.airlift.units.Duration taskTerminationTimeout, boolean summarizeTaskInfo, io.airlift.json.JsonCodec<TaskStatus> taskStatusCodec, io.airlift.json.JsonCodec<DynamicFiltersCollector.VersionedDynamicFilterDomains> dynamicFilterDomainsCodec, io.airlift.json.JsonCodec<TaskInfo> taskInfoCodec, io.airlift.json.JsonCodec<TaskUpdateRequest> taskUpdateRequestCodec, io.airlift.json.JsonCodec<FailTaskRequest> failTaskRequestCodec, NodeTaskMap.PartitionedSplitCountTracker partitionedSplitCountTracker, io.opentelemetry.api.trace.Tracer tracer, RemoteTaskStats stats, DynamicFilterService dynamicFilterService, Set<DynamicFilterId> outboundDynamicFilterIds, Optional<io.airlift.units.DataSize> estimatedMemory) -
Method Summary
Modifier and TypeMethodDescriptionvoidabort()voidaddFinalTaskInfoListener(StateMachine.StateChangeListener<TaskInfo> stateChangeListener) Add a listener for the final task info.voidaddSplits(com.google.common.collect.Multimap<PlanNodeId, Split> splitsBySource) voidaddStateChangeListener(StateMachine.StateChangeListener<TaskStatus> stateChangeListener) Listener is always notified asynchronously using a dedicated notification thread pool so, care should be taken to avoid leakingthiswhen adding a listener in a constructor.voidcancel()voidfailLocallyImmediately(Throwable cause) Fails task from the coordinator perspective immediately, without waiting for acknowledgement from the remote taskvoidfailRemotely(Throwable cause) Trigger remote task failure.intvoidnoMoreSplits(PlanNodeId sourceId) Retrieves spooling output stats.voidsetOutputBuffers(OutputBuffers newOutputBuffers) voidsetSpeculative(boolean speculative) voidstart()toString()com.google.common.util.concurrent.ListenableFuture<Void> whenSplitQueueHasSpace(long weightThreshold)
-
Constructor Details
-
HttpRemoteTask
public HttpRemoteTask(Session session, io.opentelemetry.api.trace.Span stageSpan, TaskId taskId, InternalNode node, boolean speculative, URI location, PlanFragment planFragment, com.google.common.collect.Multimap<PlanNodeId, Split> initialSplits, OutputBuffers outputBuffers, io.airlift.http.client.HttpClient httpClient, Executor executor, ScheduledExecutorService updateScheduledExecutor, ScheduledExecutorService errorScheduledExecutor, io.airlift.units.Duration maxErrorDuration, io.airlift.units.Duration taskStatusRefreshMaxWait, io.airlift.units.Duration taskInfoUpdateInterval, io.airlift.units.Duration taskTerminationTimeout, boolean summarizeTaskInfo, io.airlift.json.JsonCodec<TaskStatus> taskStatusCodec, io.airlift.json.JsonCodec<DynamicFiltersCollector.VersionedDynamicFilterDomains> dynamicFilterDomainsCodec, io.airlift.json.JsonCodec<TaskInfo> taskInfoCodec, io.airlift.json.JsonCodec<TaskUpdateRequest> taskUpdateRequestCodec, io.airlift.json.JsonCodec<FailTaskRequest> failTaskRequestCodec, NodeTaskMap.PartitionedSplitCountTracker partitionedSplitCountTracker, io.opentelemetry.api.trace.Tracer tracer, RemoteTaskStats stats, DynamicFilterService dynamicFilterService, Set<DynamicFilterId> outboundDynamicFilterIds, Optional<io.airlift.units.DataSize> estimatedMemory)
-
-
Method Details
-
getTaskId
- Specified by:
getTaskIdin interfaceRemoteTask
-
getNodeId
- Specified by:
getNodeIdin interfaceRemoteTask
-
getTaskInfo
- Specified by:
getTaskInfoin interfaceRemoteTask
-
getTaskStatus
- Specified by:
getTaskStatusin interfaceRemoteTask
-
start
public void start()- Specified by:
startin interfaceRemoteTask
-
addSplits
- Specified by:
addSplitsin interfaceRemoteTask
-
noMoreSplits
- Specified by:
noMoreSplitsin interfaceRemoteTask
-
setOutputBuffers
- Specified by:
setOutputBuffersin interfaceRemoteTask
-
setSpeculative
public void setSpeculative(boolean speculative) - Specified by:
setSpeculativein interfaceRemoteTask
-
getPartitionedSplitsInfo
- Specified by:
getPartitionedSplitsInfoin interfaceRemoteTask
-
getUnacknowledgedPartitionedSplitsInfo
-
getQueuedPartitionedSplitsInfo
- Specified by:
getQueuedPartitionedSplitsInfoin interfaceRemoteTask
-
getUnacknowledgedPartitionedSplitCount
public int getUnacknowledgedPartitionedSplitCount()- Specified by:
getUnacknowledgedPartitionedSplitCountin interfaceRemoteTask
-
retrieveAndDropSpoolingOutputStats
Description copied from interface:RemoteTaskRetrieves spooling output stats. Stats are available only for tasks that are in theTaskState.FINISHEDstate and have received the final task info (seeRemoteTask.addFinalTaskInfoListener(StateChangeListener). Stats can be retrieved only once and are discarded upon retrieval. Subsequent calls to the method after initial retrieval will fail.The retrieve-and-drop semantics is necessary to avoid unnecessary memory overhead of keeping the
SpoolingOutputStats.Snapshotfor every task as usually only the total output of the entire stage is of interest.- Specified by:
retrieveAndDropSpoolingOutputStatsin interfaceRemoteTask- Returns:
- spooling output statistics
-
addStateChangeListener
public void addStateChangeListener(StateMachine.StateChangeListener<TaskStatus> stateChangeListener) Description copied from interface:RemoteTaskListener is always notified asynchronously using a dedicated notification thread pool so, care should be taken to avoid leakingthiswhen adding a listener in a constructor. Additionally, it is possible notifications are observed out of order due to the asynchronous execution.- Specified by:
addStateChangeListenerin interfaceRemoteTask
-
addFinalTaskInfoListener
public void addFinalTaskInfoListener(StateMachine.StateChangeListener<TaskInfo> stateChangeListener) Description copied from interface:RemoteTaskAdd a listener for the final task info. This notification is guaranteed to be fired only once. Listener is always notified asynchronously using a dedicated notification thread pool so, care should be taken to avoid leakingthiswhen adding a listener in a constructor. Additionally, it is possible notifications are observed out of order due to the asynchronous execution.- Specified by:
addFinalTaskInfoListenerin interfaceRemoteTask
-
whenSplitQueueHasSpace
public com.google.common.util.concurrent.ListenableFuture<Void> whenSplitQueueHasSpace(long weightThreshold) - Specified by:
whenSplitQueueHasSpacein interfaceRemoteTask
-
abort
public void abort()- Specified by:
abortin interfaceRemoteTask
-
cancel
public void cancel()- Specified by:
cancelin interfaceRemoteTask
-
failRemotely
Trigger remote task failure. Task status will be updated only when request sent to remote node returns.- Specified by:
failRemotelyin interfaceRemoteTask
-
failLocallyImmediately
Description copied from interface:RemoteTaskFails task from the coordinator perspective immediately, without waiting for acknowledgement from the remote task- Specified by:
failLocallyImmediatelyin interfaceRemoteTask
-
toString
-