30
30
import org .elasticsearch .cluster .metadata .MetaData ;
31
31
import org .elasticsearch .cluster .node .DiscoveryNodes ;
32
32
import org .elasticsearch .cluster .service .ClusterService ;
33
+ import org .elasticsearch .common .Nullable ;
33
34
import org .elasticsearch .common .component .AbstractComponent ;
34
35
import org .elasticsearch .common .settings .Settings ;
35
36
import org .elasticsearch .tasks .Task ;
@@ -58,22 +59,22 @@ public PersistentTasksClusterService(Settings settings, PersistentTasksExecutorR
58
59
* Creates a new persistent task on master node
59
60
*
60
61
* @param action the action name
61
- * @param request request
62
+ * @param params params
62
63
* @param listener the listener that will be called when task is started
63
64
*/
64
- public <Request extends PersistentTaskRequest > void createPersistentTask (String taskId , String action , Request request ,
65
- ActionListener <PersistentTask <?>> listener ) {
65
+ public <Params extends PersistentTaskParams > void createPersistentTask (String taskId , String action , @ Nullable Params params ,
66
+ ActionListener <PersistentTask <?>> listener ) {
66
67
clusterService .submitStateUpdateTask ("create persistent task" , new ClusterStateUpdateTask () {
67
68
@ Override
68
69
public ClusterState execute (ClusterState currentState ) throws Exception {
69
70
PersistentTasksCustomMetaData .Builder builder = builder (currentState );
70
71
if (builder .hasTask (taskId )) {
71
72
throw new ResourceAlreadyExistsException ("task with id {" + taskId + "} already exist" );
72
73
}
73
- validate (action , clusterService .state (), request );
74
+ validate (action , clusterService .state (), params );
74
75
final Assignment assignment ;
75
- assignment = getAssignement (action , currentState , request );
76
- return update (currentState , builder .addTask (taskId , action , request , assignment ));
76
+ assignment = getAssignement (action , currentState , params );
77
+ return update (currentState , builder .addTask (taskId , action , params , assignment ));
77
78
}
78
79
79
80
@ Override
@@ -205,14 +206,15 @@ public void clusterStateProcessed(String source, ClusterState oldState, ClusterS
205
206
});
206
207
}
207
208
208
- private <Request extends PersistentTaskRequest > Assignment getAssignement (String taskName , ClusterState currentState , Request request ) {
209
- PersistentTasksExecutor <Request > persistentTasksExecutor = registry .getPersistentTaskExecutorSafe (taskName );
210
- return persistentTasksExecutor .getAssignment (request , currentState );
209
+ private <Params extends PersistentTaskParams > Assignment getAssignement (String taskName , ClusterState currentState ,
210
+ @ Nullable Params params ) {
211
+ PersistentTasksExecutor <Params > persistentTasksExecutor = registry .getPersistentTaskExecutorSafe (taskName );
212
+ return persistentTasksExecutor .getAssignment (params , currentState );
211
213
}
212
214
213
- private <Request extends PersistentTaskRequest > void validate (String taskName , ClusterState currentState , Request request ) {
214
- PersistentTasksExecutor <Request > persistentTasksExecutor = registry .getPersistentTaskExecutorSafe (taskName );
215
- persistentTasksExecutor .validate (request , currentState );
215
+ private <Params extends PersistentTaskParams > void validate (String taskName , ClusterState currentState , @ Nullable Params params ) {
216
+ PersistentTasksExecutor <Params > persistentTasksExecutor = registry .getPersistentTaskExecutorSafe (taskName );
217
+ persistentTasksExecutor .validate (params , currentState );
216
218
}
217
219
218
220
@ Override
@@ -229,7 +231,7 @@ public void clusterChanged(ClusterChangedEvent event) {
229
231
}
230
232
231
233
interface ExecutorNodeDecider {
232
- <Request extends PersistentTaskRequest > Assignment getAssignment (String action , ClusterState currentState , Request request );
234
+ <Params extends PersistentTaskParams > Assignment getAssignment (String action , ClusterState currentState , Params params );
233
235
}
234
236
235
237
static boolean reassignmentRequired (ClusterChangedEvent event , ExecutorNodeDecider decider ) {
@@ -245,7 +247,7 @@ static boolean reassignmentRequired(ClusterChangedEvent event, ExecutorNodeDecid
245
247
if (taskInProgress .needsReassignment (event .state ().nodes ())) {
246
248
// there is an unassigned task or task with a disappeared node - we need to try assigning it
247
249
if (Objects .equals (taskInProgress .getAssignment (),
248
- decider .getAssignment (taskInProgress .getTaskName (), event .state (), taskInProgress .getRequest ())) == false ) {
250
+ decider .getAssignment (taskInProgress .getTaskName (), event .state (), taskInProgress .getParams ())) == false ) {
249
251
// it looks like a assignment for at least one task is possible - let's trigger reassignment
250
252
reassignmentRequired = true ;
251
253
break ;
@@ -290,7 +292,7 @@ static ClusterState reassignTasks(ClusterState currentState, Logger logger, Exec
290
292
for (PersistentTask <?> task : tasks .tasks ()) {
291
293
if (task .needsReassignment (nodes )) {
292
294
// there is an unassigned task - we need to try assigning it
293
- Assignment assignment = decider .getAssignment (task .getTaskName (), clusterState , task .getRequest ());
295
+ Assignment assignment = decider .getAssignment (task .getTaskName (), clusterState , task .getParams ());
294
296
if (Objects .equals (assignment , task .getAssignment ()) == false ) {
295
297
logger .trace ("reassigning task {} from node {} to node {}" , task .getId (),
296
298
task .getAssignment ().getExecutorNode (), assignment .getExecutorNode ());
0 commit comments