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) {
|
if (event.changedCustomMetadataSet().contains(PersistentTasksCustomMetadata.TYPE) == false) {
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
final PersistentTasksCustomMetadata previousPersistentTasks = event.previousState()
|
|
||||||
.getMetadata()
|
PersistentTasksCustomMetadata previousPersistentTasks = PersistentTasksCustomMetadata.getPersistentTasksCustomMetadata(
|
||||||
.custom(PersistentTasksCustomMetadata.TYPE);
|
event.previousState()
|
||||||
final PersistentTasksCustomMetadata currentPersistentTasks = event.state().getMetadata().custom(PersistentTasksCustomMetadata.TYPE);
|
);
|
||||||
Set<String> previousMlTaskIds = findMlProcessTaskIds(previousPersistentTasks);
|
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> currentMlTaskIds = findMlProcessTaskIds(currentPersistentTasks);
|
||||||
Set<String> stoppedTaskTypes = previousMlTaskIds.stream()
|
|
||||||
.filter(id -> currentMlTaskIds.contains(id) == false) // remove the tasks that are still present. Stopped Ids only.
|
Set<PersistentTasksCustomMetadata.PersistentTask<?>> previousMlTasks = MlTasks.findMlProcessTasks(previousPersistentTasks);
|
||||||
.map(previousPersistentTasks::getTask)
|
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(PersistentTasksCustomMetadata.PersistentTask::getTaskName)
|
||||||
.map(MlTasks::prettyPrintTaskName)
|
.map(MlTasks::prettyPrintTaskName)
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue