feat: searcher can not found candidate scheduler clusters, return all scheduler clusters (#1991)
Signed-off-by: Gaius <gaius.qi@gmail.com>
This commit is contained in:
parent
7614664039
commit
4755fca7f2
|
|
@ -39,6 +39,13 @@ var (
|
||||||
Help: "Gauge of the number of peer.",
|
Help: "Gauge of the number of peer.",
|
||||||
}, []string{"version", "commit"})
|
}, []string{"version", "commit"})
|
||||||
|
|
||||||
|
SearchSchedulerClusterFailureCount = promauto.NewCounterVec(prometheus.CounterOpts{
|
||||||
|
Namespace: types.MetricsNamespace,
|
||||||
|
Subsystem: types.SchedulerMetricsName,
|
||||||
|
Name: "search_scheduler_cluster_failure_total",
|
||||||
|
Help: "Counter of the number of failed of searching scheduler cluster.",
|
||||||
|
}, []string{"version", "commit"})
|
||||||
|
|
||||||
VersionGauge = promauto.NewGaugeVec(prometheus.GaugeOpts{
|
VersionGauge = promauto.NewGaugeVec(prometheus.GaugeOpts{
|
||||||
Namespace: types.MetricsNamespace,
|
Namespace: types.MetricsNamespace,
|
||||||
Subsystem: types.ManagerMetricsName,
|
Subsystem: types.ManagerMetricsName,
|
||||||
|
|
|
||||||
|
|
@ -544,20 +544,28 @@ func (s *Server) ListSchedulers(ctx context.Context, req *managerv1.ListSchedule
|
||||||
if err := s.db.WithContext(ctx).Preload("SecurityGroup.SecurityRules").Preload("SeedPeerClusters.SeedPeers", "state = ?", "active").Preload("Schedulers", "state = ?", "active").Find(&schedulerClusters).Error; err != nil {
|
if err := s.db.WithContext(ctx).Preload("SecurityGroup.SecurityRules").Preload("SeedPeerClusters.SeedPeers", "state = ?", "active").Preload("Schedulers", "state = ?", "active").Find(&schedulerClusters).Error; err != nil {
|
||||||
return nil, status.Error(codes.Unknown, err.Error())
|
return nil, status.Error(codes.Unknown, err.Error())
|
||||||
}
|
}
|
||||||
|
log.Debugf("list scheduler clusters %v with hostInfo %#v", getSchedulerClusterNames(schedulerClusters), req.HostInfo)
|
||||||
|
|
||||||
// Search optimal scheduler clusters.
|
// Search optimal scheduler clusters.
|
||||||
log.Debugf("list scheduler clusters %v with hostInfo %#v", getSchedulerClusterNames(schedulerClusters), req.HostInfo)
|
// If searcher can not found candidate scheduler cluster,
|
||||||
schedulerClusters, err := s.searcher.FindSchedulerClusters(ctx, schedulerClusters, req)
|
// return all scheduler clusters.
|
||||||
|
var (
|
||||||
|
candidateSchedulerClusters []model.SchedulerCluster
|
||||||
|
err error
|
||||||
|
)
|
||||||
|
candidateSchedulerClusters, err = s.searcher.FindSchedulerClusters(ctx, schedulerClusters, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
candidateSchedulerClusters = schedulerClusters
|
||||||
|
|
||||||
log.Error(err)
|
log.Error(err)
|
||||||
return nil, status.Error(codes.NotFound, "scheduler cluster not found")
|
metrics.SearchSchedulerClusterFailureCount.WithLabelValues(req.Version, req.Commit).Inc()
|
||||||
}
|
}
|
||||||
log.Debugf("find matching scheduler cluster %v", getSchedulerClusterNames(schedulerClusters))
|
log.Debugf("find matching scheduler cluster %v", getSchedulerClusterNames(schedulerClusters))
|
||||||
|
|
||||||
schedulers := []model.Scheduler{}
|
schedulers := []model.Scheduler{}
|
||||||
for _, schedulerCluster := range schedulerClusters {
|
for _, candidateSchedulerCluster := range candidateSchedulerClusters {
|
||||||
for _, scheduler := range schedulerCluster.Schedulers {
|
for _, scheduler := range candidateSchedulerCluster.Schedulers {
|
||||||
scheduler.SchedulerCluster = schedulerCluster
|
scheduler.SchedulerCluster = candidateSchedulerCluster
|
||||||
schedulers = append(schedulers, scheduler)
|
schedulers = append(schedulers, scheduler)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue