From 69779a0a7d622d99b04800c8ef571f6dc8ecd8f9 Mon Sep 17 00:00:00 2001 From: Gabriel Adrian Samfira Date: Thu, 17 Jul 2025 16:39:55 +0000 Subject: [PATCH] Fix scale set param Do not look for a name when composing the scale set. Preload may not have been called on an entity, but we still have the ID, which is the only thing needed when GetEntity() is called. Signed-off-by: Gabriel Adrian Samfira --- database/sql/scalesets.go | 4 ++-- database/sql/util.go | 4 ++-- params/params.go | 2 +- runner/pool/pool.go | 7 ++++++- workers/cache/cache.go | 2 +- workers/cache/gitea_tools.go | 10 +++++++--- workers/cache/tool_cache.go | 4 ++-- 7 files changed, 21 insertions(+), 12 deletions(-) diff --git a/database/sql/scalesets.go b/database/sql/scalesets.go index 930ae17d..65a51ca0 100644 --- a/database/sql/scalesets.go +++ b/database/sql/scalesets.go @@ -389,7 +389,7 @@ func (s *sqlDatabase) SetScaleSetLastMessageID(_ context.Context, scaleSetID uin } }() if err := s.conn.Transaction(func(tx *gorm.DB) error { - dbSet, err := s.getScaleSetByID(tx, scaleSetID) + dbSet, err := s.getScaleSetByID(tx, scaleSetID, "Instances", "Enterprise", "Organization", "Repository") if err != nil { return errors.Wrap(err, "fetching scale set") } @@ -416,7 +416,7 @@ func (s *sqlDatabase) SetScaleSetDesiredRunnerCount(_ context.Context, scaleSetI } }() if err := s.conn.Transaction(func(tx *gorm.DB) error { - dbSet, err := s.getScaleSetByID(tx, scaleSetID) + dbSet, err := s.getScaleSetByID(tx, scaleSetID, "Instances", "Enterprise", "Organization", "Repository") if err != nil { return errors.Wrap(err, "fetching scale set") } diff --git a/database/sql/util.go b/database/sql/util.go index d55e0174..2b2a1de8 100644 --- a/database/sql/util.go +++ b/database/sql/util.go @@ -362,12 +362,12 @@ func (s *sqlDatabase) sqlToCommonScaleSet(scaleSet ScaleSet) (params.ScaleSet, e } } - if scaleSet.OrgID != nil && scaleSet.Organization.Name != "" { + if scaleSet.OrgID != nil { ret.OrgID = scaleSet.OrgID.String() ret.OrgName = scaleSet.Organization.Name } - if scaleSet.EnterpriseID != nil && scaleSet.Enterprise.Name != "" { + if scaleSet.EnterpriseID != nil { ret.EnterpriseID = scaleSet.EnterpriseID.String() ret.EnterpriseName = scaleSet.Enterprise.Name } diff --git a/params/params.go b/params/params.go index 3a0e8435..6e1bc1aa 100644 --- a/params/params.go +++ b/params/params.go @@ -570,7 +570,7 @@ func (p ScaleSet) GetEntity() (ForgeEntity, error) { EntityType: ForgeEntityTypeEnterprise, }, nil } - return ForgeEntity{}, fmt.Errorf("pool has no associated entity") + return ForgeEntity{}, fmt.Errorf("scale set has no associated entity") } func (p *ScaleSet) ScaleSetType() ForgeEntityType { diff --git a/runner/pool/pool.go b/runner/pool/pool.go index 9f6d3c0e..c161e41d 100644 --- a/runner/pool/pool.go +++ b/runner/pool/pool.go @@ -68,7 +68,12 @@ const ( ) func NewEntityPoolManager(ctx context.Context, entity params.ForgeEntity, instanceTokenGetter auth.InstanceTokenGetter, providers map[string]common.Provider, store dbCommon.Store) (common.PoolManager, error) { - ctx = garmUtil.WithSlogContext(ctx, slog.Any("pool_mgr", entity.String()), slog.Any("pool_type", entity.EntityType)) + ctx = garmUtil.WithSlogContext( + ctx, + slog.Any("pool_mgr", entity.String()), + slog.Any("endpoint", entity.Credentials.Endpoint.Name), + slog.Any("pool_type", entity.EntityType), + ) ghc, err := ghClient.Client(ctx, entity) if err != nil { return nil, errors.Wrap(err, "getting github client") diff --git a/workers/cache/cache.go b/workers/cache/cache.go index 3f589edd..3b387f50 100644 --- a/workers/cache/cache.go +++ b/workers/cache/cache.go @@ -365,7 +365,7 @@ func (w *Worker) handleScaleSetEvent(event common.ChangePayload) { } entity, err := scaleSet.GetEntity() if err != nil { - slog.DebugContext(w.ctx, "getting entity from pool", "error", err) + slog.DebugContext(w.ctx, "getting entity from scale set", "error", err) return } diff --git a/workers/cache/gitea_tools.go b/workers/cache/gitea_tools.go index 5d09ccb3..43fd86ba 100644 --- a/workers/cache/gitea_tools.go +++ b/workers/cache/gitea_tools.go @@ -15,9 +15,11 @@ package cache import ( + "context" "encoding/json" "fmt" "io" + "log/slog" "net/http" "strings" "time" @@ -139,7 +141,7 @@ func (g GiteaEntityTools) MinimumVersion() (GiteaEntityTool, bool) { return GiteaEntityTool{}, false } -func getTools() ([]commonParams.RunnerApplicationDownload, error) { +func getTools(ctx context.Context) ([]commonParams.RunnerApplicationDownload, error) { resp, err := http.Get(GiteaRunnerReleasesURL) if err != nil { return nil, err @@ -170,11 +172,13 @@ func getTools() ([]commonParams.RunnerApplicationDownload, error) { for _, asset := range latest.Assets { arch, err := asset.GetArch() if err != nil { - return nil, fmt.Errorf("getting arch: %w", err) + slog.InfoContext(ctx, "ignoring unrecognized tools arch", "tool", asset.Name) + continue } os, err := asset.GetOS() if err != nil { - return nil, fmt.Errorf("getting os: %w", err) + slog.InfoContext(ctx, "ignoring unrecognized tools os", "tool", asset.Name) + continue } ret = append(ret, commonParams.RunnerApplicationDownload{ OS: os, diff --git a/workers/cache/tool_cache.go b/workers/cache/tool_cache.go index 6cbcc716..fcf66757 100644 --- a/workers/cache/tool_cache.go +++ b/workers/cache/tool_cache.go @@ -162,7 +162,7 @@ func (t *toolsUpdater) giteaUpdateLoop() { randInt = big.NewInt(0) } t.sleepWithCancel(time.Duration(randInt.Int64()) * time.Millisecond) - tools, err := getTools() + tools, err := getTools(t.ctx) if err != nil { t.addStatusEvent(fmt.Sprintf("failed to update gitea tools: %q", err), params.EventError) } else { @@ -181,7 +181,7 @@ func (t *toolsUpdater) giteaUpdateLoop() { case <-t.ctx.Done(): return case <-ticker.C: - tools, err := getTools() + tools, err := getTools(t.ctx) if err != nil { t.addStatusEvent(fmt.Sprintf("failed to update gitea tools: %q", err), params.EventError) slog.DebugContext(t.ctx, "failed to update gitea tools", "error", err)