Fix panic when process RunScorePlugins for cap out of range

Signed-off-by: kerthcet <kerthcet@gmail.com>
This commit is contained in:
kerthcet 2023-10-31 16:02:16 +08:00
parent 4734021993
commit b02aad42fa
2 changed files with 17 additions and 1 deletions

View File

@ -1015,7 +1015,7 @@ func (f *frameworkImpl) RunScorePlugins(ctx context.Context, state *framework.Cy
metrics.FrameworkExtensionPointDuration.WithLabelValues(metrics.Score, status.Code().String(), f.profileName).Observe(metrics.SinceInSeconds(startTime))
}()
allNodePluginScores := make([]framework.NodePluginScores, len(nodes))
numPlugins := len(f.scorePlugins) - state.SkipScorePlugins.Len()
numPlugins := len(f.scorePlugins)
plugins := make([]framework.ScorePlugin, 0, numPlugins)
pluginToNodeScores := make(map[string]framework.NodeScoreList, numPlugins)
for _, pl := range f.scorePlugins {

View File

@ -1385,6 +1385,22 @@ func TestRunScorePlugins(t *testing.T) {
},
},
},
{
name: "skipped prescore plugin number greater than the number of score plugins",
plugins: buildScoreConfigDefaultWeights(scorePlugin1),
pluginConfigs: nil,
skippedPlugins: sets.New(scorePlugin1, "score-plugin-unknown"),
want: []framework.NodePluginScores{
{
Name: "node1",
Scores: []framework.PluginScore{},
},
{
Name: "node2",
Scores: []framework.PluginScore{},
},
},
},
}
for _, tt := range tests {