mirror of
https://github.com/elastic/elasticsearch.git
synced 2025-06-28 17:34:17 -04:00
[ML] Fix NPE in trained model assignment updater (#108942)
The NPE causes the rebalance to fail, later retires would have corrected the situation
This commit is contained in:
parent
e88de19843
commit
103633aa7b
2 changed files with 20 additions and 8 deletions
5
docs/changelog/108942.yaml
Normal file
5
docs/changelog/108942.yaml
Normal file
|
@ -0,0 +1,5 @@
|
|||
pr: 108942
|
||||
summary: Fix NPE in trained model assignment updater
|
||||
area: Machine Learning
|
||||
type: bug
|
||||
issues: []
|
|
@ -1047,15 +1047,22 @@ public class TrainedModelAssignmentClusterService implements ClusterStateListene
|
|||
if (event.changedCustomMetadataSet().contains(PersistentTasksCustomMetadata.TYPE) == false) {
|
||||
return Optional.empty();
|
||||
}
|
||||
final PersistentTasksCustomMetadata previousPersistentTasks = event.previousState()
|
||||
.getMetadata()
|
||||
.custom(PersistentTasksCustomMetadata.TYPE);
|
||||
final PersistentTasksCustomMetadata currentPersistentTasks = event.state().getMetadata().custom(PersistentTasksCustomMetadata.TYPE);
|
||||
Set<String> previousMlTaskIds = findMlProcessTaskIds(previousPersistentTasks);
|
||||
|
||||
PersistentTasksCustomMetadata previousPersistentTasks = PersistentTasksCustomMetadata.getPersistentTasksCustomMetadata(
|
||||
event.previousState()
|
||||
);
|
||||
if (previousPersistentTasks == null) { // no previous jobs so nothing has stopped
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
PersistentTasksCustomMetadata currentPersistentTasks = PersistentTasksCustomMetadata.getPersistentTasksCustomMetadata(
|
||||
event.state()
|
||||
);
|
||||
Set<String> currentMlTaskIds = findMlProcessTaskIds(currentPersistentTasks);
|
||||
Set<String> stoppedTaskTypes = previousMlTaskIds.stream()
|
||||
.filter(id -> currentMlTaskIds.contains(id) == false) // remove the tasks that are still present. Stopped Ids only.
|
||||
.map(previousPersistentTasks::getTask)
|
||||
|
||||
Set<PersistentTasksCustomMetadata.PersistentTask<?>> previousMlTasks = MlTasks.findMlProcessTasks(previousPersistentTasks);
|
||||
Set<String> stoppedTaskTypes = previousMlTasks.stream()
|
||||
.filter(task -> currentMlTaskIds.contains(task.getId()) == false) // remove the tasks that are still present. Stopped Ids only.
|
||||
.map(PersistentTasksCustomMetadata.PersistentTask::getTaskName)
|
||||
.map(MlTasks::prettyPrintTaskName)
|
||||
.collect(Collectors.toSet());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue