Fix clusterInfoSnapshot may be nil it will caused painc

Signed-off-by: mathlsj <mathlsj@outlook.com>
This commit is contained in:
mathlsj 2022-10-16 21:02:59 +08:00
parent 93817a9a58
commit 4c39d8deec
3 changed files with 8 additions and 7 deletions

View File

@ -15,7 +15,7 @@ type Cache interface {
UpdateCluster(cluster *clusterv1alpha1.Cluster)
DeleteCluster(cluster *clusterv1alpha1.Cluster)
// Snapshot returns a snapshot of the current clusters info
Snapshot() *Snapshot
Snapshot() Snapshot
}
type schedulerCache struct {
@ -42,13 +42,14 @@ func (c *schedulerCache) DeleteCluster(cluster *clusterv1alpha1.Cluster) {
}
// TODO: need optimization, only clone when necessary
func (c *schedulerCache) Snapshot() *Snapshot {
func (c *schedulerCache) Snapshot() Snapshot {
out := NewEmptySnapshot()
clusters, err := c.clusterLister.List(labels.Everything())
if err != nil {
klog.Errorf("Failed to list clusters: %v", err)
return nil
return out
}
out := NewEmptySnapshot()
out.clusterInfoList = make([]*framework.ClusterInfo, 0, len(clusters))
for _, cluster := range clusters {
cloned := cluster.DeepCopy()

View File

@ -15,8 +15,8 @@ type Snapshot struct {
}
// NewEmptySnapshot initializes a Snapshot struct and returns it.
func NewEmptySnapshot() *Snapshot {
return &Snapshot{}
func NewEmptySnapshot() Snapshot {
return Snapshot{}
}
// NumOfClusters returns the number of clusters.

View File

@ -58,7 +58,7 @@ func (g *genericScheduler) Schedule(ctx context.Context, placement *policyv1alph
return result, fmt.Errorf("no clusters available to schedule")
}
feasibleClusters, diagnosis, err := g.findClustersThatFit(ctx, g.scheduleFramework, placement, spec, clusterInfoSnapshot)
feasibleClusters, diagnosis, err := g.findClustersThatFit(ctx, g.scheduleFramework, placement, spec, &clusterInfoSnapshot)
if err != nil {
return result, fmt.Errorf("failed to findClustersThatFit: %v", err)
}