Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions admin/worker/run_autoscaler.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,26 +34,26 @@ func (w *Worker) runAutoscaler(ctx context.Context) error {
}

for _, rec := range recs {
// if UpdatedOn is too old, the recommendation is stale and may not be trusted.
if time.Since(rec.UpdatedOn) >= legacyRecommendTime {
w.logger.Debug("skipping autoscaler: the recommendation is stale", zap.String("project_id", rec.ProjectID), zap.Time("recommendation_updated_on", rec.UpdatedOn))
targetProject, err := w.admin.DB.FindProject(ctx, rec.ProjectID)
if err != nil {
w.logger.Debug("failed to find project", zap.String("project_name", targetProject.Name), zap.Error(err))
continue
}

if rec.RecommendedSlots <= 0 {
w.logger.Debug("skipping autoscaler: the recommend slot is <= 0", zap.String("project_id", rec.ProjectID), zap.Int("recommended_slots", rec.RecommendedSlots))
projectOrg, err := w.admin.DB.FindOrganization(ctx, targetProject.OrganizationID)
if err != nil {
w.logger.Error("failed to autoscale: unable to find org for the project", zap.String("organization_name", projectOrg.Name), zap.String("project_name", targetProject.Name), zap.Error(err))
continue
}

targetProject, err := w.admin.DB.FindProject(ctx, rec.ProjectID)
if err != nil {
w.logger.Debug("failed to find project", zap.String("project_id", rec.ProjectID), zap.Error(err))
// if UpdatedOn is too old, the recommendation is stale and may not be trusted.
if time.Since(rec.UpdatedOn) >= legacyRecommendTime {
w.logger.Debug("skipping autoscaler: the recommendation is stale", zap.String("project_name", targetProject.Name), zap.Time("recommendation_updated_on", rec.UpdatedOn))
continue
}

projectOrg, err := w.admin.DB.FindOrganization(ctx, targetProject.OrganizationID)
if err != nil {
w.logger.Error("failed to autoscale: unable to find org for the project", zap.String("org_id", targetProject.OrganizationID), zap.String("project_name", targetProject.Name), zap.Error(err))
if rec.RecommendedSlots <= 0 {
w.logger.Debug("skipping autoscaler: the recommend slot is <= 0", zap.String("project_name", targetProject.Name), zap.Int("recommended_slots", rec.RecommendedSlots))
continue
}

Expand All @@ -72,7 +72,7 @@ func (w *Worker) runAutoscaler(ctx context.Context) error {
// If the recommendation would exceed a quota, change it to scale to the limit of the quota.
if overshoot > 0 {
if rec.RecommendedSlots-overshoot < targetProject.ProdSlots {
w.logger.Debug("skipping autoscaler: already scaled to or beyond the quota", zap.String("org_id", targetProject.OrganizationID), zap.String("project_name", targetProject.Name), zap.Int("recommended_slots", rec.RecommendedSlots))
w.logger.Debug("skipping autoscaler: already scaled to or beyond the quota", zap.String("organization_name", projectOrg.Name), zap.String("project_name", targetProject.Name), zap.Int("recommended_slots", rec.RecommendedSlots))
continue
}

Expand All @@ -84,7 +84,7 @@ func (w *Worker) runAutoscaler(ctx context.Context) error {
logMessage := "skipping autoscaler: " + reason

logFields := []zap.Field{
zap.String("org_id", targetProject.OrganizationID),
zap.String("organization_name", projectOrg.Name),
zap.String("project_name", targetProject.Name),
zap.Int("current_slots", targetProject.ProdSlots),
zap.Int("recommended_slots", rec.RecommendedSlots),
Expand Down
Loading