Skip to content

Commit abd9ae3

Browse files
imotovmartijnvg
authored andcommitted
Persistent Tasks: PersistentTaskRequest -> PersistTaskParams (elastic#1057)
Removes the last pieces of ActionRequest from PersistentTaskRequest and renames it into PersistTaskParams, which is now just an interface that extends NamedWriteable and ToXContent.
1 parent 6bfea09 commit abd9ae3

17 files changed

+300
-251
lines changed

server/src/main/java/org/elasticsearch/persistent/NodePersistentTasksExecutor.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919
package org.elasticsearch.persistent;
2020

21+
import org.elasticsearch.common.Nullable;
2122
import org.elasticsearch.common.util.concurrent.AbstractRunnable;
2223
import org.elasticsearch.threadpool.ThreadPool;
2324

@@ -33,10 +34,10 @@ public NodePersistentTasksExecutor(ThreadPool threadPool) {
3334
this.threadPool = threadPool;
3435
}
3536

36-
public <Request extends PersistentTaskRequest> void executeTask(Request request,
37-
AllocatedPersistentTask task,
38-
PersistentTasksExecutor<Request> action) {
39-
threadPool.executor(action.getExecutor()).execute(new AbstractRunnable() {
37+
public <Params extends PersistentTaskParams> void executeTask(@Nullable Params params,
38+
AllocatedPersistentTask task,
39+
PersistentTasksExecutor<Params> executor) {
40+
threadPool.executor(executor.getExecutor()).execute(new AbstractRunnable() {
4041
@Override
4142
public void onFailure(Exception e) {
4243
task.markAsFailed(e);
@@ -46,7 +47,7 @@ public void onFailure(Exception e) {
4647
@Override
4748
protected void doRun() throws Exception {
4849
try {
49-
action.nodeOperation(task, request);
50+
executor.nodeOperation(task, params);
5051
} catch (Exception ex) {
5152
task.markAsFailed(ex);
5253
}

server/src/main/java/org/elasticsearch/persistent/PersistentTaskRequest.java renamed to server/src/main/java/org/elasticsearch/persistent/PersistentTaskParams.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,15 @@
1616
* specific language governing permissions and limitations
1717
* under the License.
1818
*/
19+
1920
package org.elasticsearch.persistent;
2021

21-
import org.elasticsearch.action.ActionRequest;
2222
import org.elasticsearch.common.io.stream.NamedWriteable;
2323
import org.elasticsearch.common.xcontent.ToXContent;
24-
import org.elasticsearch.tasks.Task;
25-
import org.elasticsearch.tasks.TaskId;
2624

2725
/**
28-
* Base class for a request for a persistent task
26+
* Parameters used to start persistent task
2927
*/
30-
public abstract class PersistentTaskRequest extends ActionRequest implements NamedWriteable, ToXContent {
31-
@Override
32-
public Task createTask(long id, String type, String action, TaskId parentTaskId) {
33-
return new AllocatedPersistentTask(id, type, action, getDescription(), parentTaskId);
34-
}
28+
public interface PersistentTaskParams extends NamedWriteable, ToXContent {
29+
3530
}

server/src/main/java/org/elasticsearch/persistent/PersistentTasksClusterService.java

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.elasticsearch.cluster.metadata.MetaData;
3131
import org.elasticsearch.cluster.node.DiscoveryNodes;
3232
import org.elasticsearch.cluster.service.ClusterService;
33+
import org.elasticsearch.common.Nullable;
3334
import org.elasticsearch.common.component.AbstractComponent;
3435
import org.elasticsearch.common.settings.Settings;
3536
import org.elasticsearch.tasks.Task;
@@ -58,22 +59,22 @@ public PersistentTasksClusterService(Settings settings, PersistentTasksExecutorR
5859
* Creates a new persistent task on master node
5960
*
6061
* @param action the action name
61-
* @param request request
62+
* @param params params
6263
* @param listener the listener that will be called when task is started
6364
*/
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) {
6667
clusterService.submitStateUpdateTask("create persistent task", new ClusterStateUpdateTask() {
6768
@Override
6869
public ClusterState execute(ClusterState currentState) throws Exception {
6970
PersistentTasksCustomMetaData.Builder builder = builder(currentState);
7071
if (builder.hasTask(taskId)) {
7172
throw new ResourceAlreadyExistsException("task with id {" + taskId + "} already exist");
7273
}
73-
validate(action, clusterService.state(), request);
74+
validate(action, clusterService.state(), params);
7475
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));
7778
}
7879

7980
@Override
@@ -205,14 +206,15 @@ public void clusterStateProcessed(String source, ClusterState oldState, ClusterS
205206
});
206207
}
207208

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);
211213
}
212214

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);
216218
}
217219

218220
@Override
@@ -229,7 +231,7 @@ public void clusterChanged(ClusterChangedEvent event) {
229231
}
230232

231233
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);
233235
}
234236

235237
static boolean reassignmentRequired(ClusterChangedEvent event, ExecutorNodeDecider decider) {
@@ -245,7 +247,7 @@ static boolean reassignmentRequired(ClusterChangedEvent event, ExecutorNodeDecid
245247
if (taskInProgress.needsReassignment(event.state().nodes())) {
246248
// there is an unassigned task or task with a disappeared node - we need to try assigning it
247249
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) {
249251
// it looks like a assignment for at least one task is possible - let's trigger reassignment
250252
reassignmentRequired = true;
251253
break;
@@ -290,7 +292,7 @@ static ClusterState reassignTasks(ClusterState currentState, Logger logger, Exec
290292
for (PersistentTask<?> task : tasks.tasks()) {
291293
if (task.needsReassignment(nodes)) {
292294
// 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());
294296
if (Objects.equals(assignment, task.getAssignment()) == false) {
295297
logger.trace("reassigning task {} from node {} to node {}", task.getId(),
296298
task.getAssignment().getExecutorNode(), assignment.getExecutorNode());

0 commit comments

Comments
 (0)