Merge pull request #114518 from Huang-Wei/bug-all-filters

Fix a regression that scheduler always go through all Filter plugins
This commit is contained in:
Kubernetes Prow Robot 2022-12-15 15:03:47 -08:00 committed by GitHub
commit 3f6738b8e6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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}
}
}

View File

@ -1506,7 +1506,6 @@ func TestFilterPlugins(t *testing.T) {
name: "TestPlugin1",
inj: injectedResult{FilterStatus: int(framework.Error)},
},
{
name: "TestPlugin2",
inj: injectedResult{FilterStatus: int(framework.Error)},
@ -1517,6 +1516,23 @@ func TestFilterPlugins(t *testing.T) {
"TestPlugin1": framework.AsStatus(fmt.Errorf(`running "TestPlugin1" filter plugin: %w`, errInjectedFilterStatus)).WithFailedPlugin("TestPlugin1"),
},
},
{
name: "UnschedulableAndUnschedulableFilters",
plugins: []*TestPlugin{
{
name: "TestPlugin1",
inj: injectedResult{FilterStatus: int(framework.Unschedulable)},
},
{
name: "TestPlugin2",
inj: injectedResult{FilterStatus: int(framework.Unschedulable)},
},
},
wantStatus: framework.NewStatus(framework.Unschedulable, injectFilterReason).WithFailedPlugin("TestPlugin1"),
wantStatusMap: framework.PluginToStatus{
"TestPlugin1": framework.NewStatus(framework.Unschedulable, injectFilterReason).WithFailedPlugin("TestPlugin1"),
},
},
{
name: "SuccessAndSuccessFilters",
plugins: []*TestPlugin{