Fix a regression that scheduler always go through all Filter plugins

The correct behavior is to stop upon the first Filter failure.
This commit is contained in:
Wei Huang
2022-12-15 12:00:55 -08:00
parent 3d3a180713
commit 0aecf6b3d5
2 changed files with 19 additions and 4 deletions

View File

@@ -730,11 +730,10 @@ func (f *frameworkImpl) RunFilterPlugins(
if !pluginStatus.IsUnschedulable() {
// Filter plugins are not supposed to return any status other than
// Success or Unschedulable.
errStatus := framework.AsStatus(fmt.Errorf("running %q filter plugin: %w", pl.Name(), pluginStatus.AsError())).WithFailedPlugin(pl.Name())
return map[string]*framework.Status{pl.Name(): errStatus}
pluginStatus = framework.AsStatus(fmt.Errorf("running %q filter plugin: %w", pl.Name(), pluginStatus.AsError()))
}
pluginStatus.SetFailedPlugin(pl.Name())
statuses[pl.Name()] = pluginStatus
return map[string]*framework.Status{pl.Name(): pluginStatus}
}
}