Package org.opensearch.persistent
In order to be resilient to node restarts, the persistent tasks are using the cluster state instead of a transport service to send requests and responses. The execution is done in six phases:
1. The coordinating node sends an ordinary transport request to the cluster-manager node to start a new persistent task. This task is handled
by the PersistentTasksService
, which is using
PersistentTasksClusterService
to update cluster state with the record about running persistent
task.
2. The cluster-manager node updates the PersistentTasksCustomMetadata
in the cluster state to indicate
that there is a new persistent task running in the system.
3. The PersistentTasksNodeService
running on every node in the cluster monitors changes in
the cluster state and starts execution of all new tasks assigned to the node it is running on.
4. If the task fails to start on the node, the PersistentTasksNodeService
uses the
PersistentTasksCustomMetadata
to notify the
PersistentTasksService
, which reassigns the action to another node in the cluster.
5. If a task finishes successfully on the node and calls listener.onResponse(), the corresponding persistent action is removed from the cluster state unless removeOnCompletion flag for this task is set to false.
6. The RemovePersistentTaskAction
action can be also used to remove the persistent task.
-
ClassDescriptionRepresents a executor node operation that corresponds to a persistent taskThe state of the task.ActionType that is used by executor node to indicate that the persistent action finished or failed on the node and needs to be removed from the cluster state in case of successful completion or restarted on some other node in case of failure.The request.The request bulder.The transport action.This component is responsible for execution of persistent tasks.Parameters used to start persistent taskResponse upon a successful start or an persistent taskComponent that runs only on the cluster-manager node and is responsible for assigning running tasks to nodesA cluster state record that contains a list of all running persistent tasksThe assignment.The task builder.A record that represents a single running persistent taskPersistentTasksExecutor<Params extends PersistentTaskParams>An executor of tasks that can survive restart of requesting or executing node.Components that registers all persistent task executorsThis component is responsible for coordination of execution of persistent tasks on individual nodes.The executor status.This service is used by persistent tasks and allocated persistent tasks to communicate changes to the cluster-manager node so that the cluster-manager can update the cluster state and can track of the states of the persistent tasks.Interface for a class that waits and listens for a persistent task.
PersistentTaskState
represents the state of the persistent tasks, as it is persisted in the cluster state.Transport action to remove a persistent taskThe request.The request builder.The transport action.This action can be used to add the record for the persistent action to the cluster state.Request for the action.The request builder.The transport action.Transport action for updating persistent tasksThe action request.The request builder.The transport action.