Skip to content

Commit cea5adc

Browse files
authored
Add null check in more places for persistent tasks (#123566)
There is no guarantee that a project has non-null persistent tasks [0]. Null check is already done in most places. This PR adds it in a few more places. [0] Since health-node is now a cluster-scoped persistent task, it has become more likely for the project-scoped tasks to be null. Relates: #123262
1 parent 779e1ad commit cea5adc

File tree

4 files changed

+14
-15
lines changed

4 files changed

+14
-15
lines changed

x-pack/plugin/migrate/src/main/java/org/elasticsearch/xpack/migrate/action/GetMigrationReindexStatusTransportAction.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,10 @@ public GetMigrationReindexStatusTransportAction(
6666
protected void doExecute(Task task, Request request, ActionListener<Response> listener) {
6767
String index = request.getIndex();
6868
String persistentTaskId = ReindexDataStreamAction.TASK_ID_PREFIX + index;
69-
PersistentTasksCustomMetadata persistentTasksCustomMetadata = clusterService.state()
70-
.getMetadata()
71-
.getProject()
72-
.custom(PersistentTasksCustomMetadata.TYPE);
73-
PersistentTasksCustomMetadata.PersistentTask<?> persistentTask = persistentTasksCustomMetadata.getTask(persistentTaskId);
69+
PersistentTasksCustomMetadata.PersistentTask<?> persistentTask = PersistentTasksCustomMetadata.getTaskWithId(
70+
clusterService.state(),
71+
persistentTaskId
72+
);
7473
if (persistentTask == null) {
7574
listener.onFailure(new ResourceNotFoundException("No migration reindex status found for [{}]", index));
7675
} else if (persistentTask.isAssigned()) {

x-pack/plugin/migrate/src/main/java/org/elasticsearch/xpack/migrate/task/ReindexDataStreamPersistentTaskExecutor.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -297,11 +297,8 @@ private TimeValue updateCompletionTimeAndGetTimeToLive(
297297
ReindexDataStreamTask reindexDataStreamTask,
298298
@Nullable ReindexDataStreamPersistentTaskState state
299299
) {
300-
PersistentTasksCustomMetadata persistentTasksCustomMetadata = clusterService.state()
301-
.getMetadata()
302-
.getProject()
303-
.custom(PersistentTasksCustomMetadata.TYPE);
304-
PersistentTasksCustomMetadata.PersistentTask<?> persistentTask = persistentTasksCustomMetadata.getTask(
300+
PersistentTasksCustomMetadata.PersistentTask<?> persistentTask = PersistentTasksCustomMetadata.getTaskWithId(
301+
clusterService.state(),
305302
reindexDataStreamTask.getPersistentTaskId()
306303
);
307304
if (persistentTask == null) {

x-pack/plugin/migrate/src/main/java/org/elasticsearch/xpack/migrate/task/ReindexDataStreamTask.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,12 @@ public ReindexDataStreamTask(
6666

6767
@Override
6868
public ReindexDataStreamStatus getStatus() {
69-
PersistentTasksCustomMetadata persistentTasksCustomMetadata = clusterService.state()
70-
.getMetadata()
71-
.getProject()
72-
.custom(PersistentTasksCustomMetadata.TYPE);
7369
int totalIndices = initialTotalIndices;
7470
int totalIndicesToBeUpgraded = initialTotalIndicesToBeUpgraded;
75-
PersistentTasksCustomMetadata.PersistentTask<?> persistentTask = persistentTasksCustomMetadata.getTask(getPersistentTaskId());
71+
PersistentTasksCustomMetadata.PersistentTask<?> persistentTask = PersistentTasksCustomMetadata.getTaskWithId(
72+
clusterService.state(),
73+
getPersistentTaskId()
74+
);
7675
if (persistentTask != null) {
7776
ReindexDataStreamPersistentTaskState state = (ReindexDataStreamPersistentTaskState) persistentTask.getState();
7877
if (state != null && state.totalIndices() != null && state.totalIndicesToBeUpgraded() != null) {

x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/action/TransportSetTransformUpgradeModeAction.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,10 @@ private void stopTransforms(SetUpgradeModeActionRequest request, ClusterState st
110110

111111
private void unassignTransforms(ClusterState state, ActionListener<Void> listener) {
112112
PersistentTasksCustomMetadata tasksCustomMetadata = state.metadata().getProject().custom(PersistentTasksCustomMetadata.TYPE);
113+
if (tasksCustomMetadata == null) {
114+
listener.onResponse(null);
115+
return;
116+
}
113117
var transformTasks = tasksCustomMetadata.tasks()
114118
.stream()
115119
.filter(this::isTransformTask)

0 commit comments

Comments
 (0)