From a4dee0614060db756b3624db82a5d52b31c15337 Mon Sep 17 00:00:00 2001 From: Carlos Alexandro Becker Date: Thu, 24 Jul 2025 11:58:56 -0300 Subject: [PATCH] fix: csync.Map --- internal/config/load.go | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/internal/config/load.go b/internal/config/load.go index 5d11901dd4d169041d315eb139d27e6dbec736de..6a683a1c98191e0c9f78e75773fc77839143f51e 100644 --- a/internal/config/load.go +++ b/internal/config/load.go @@ -93,35 +93,34 @@ func Load(workingDir string, debug bool) (*Config, error) { } func (c *Config) removeUnresponsiveProviders() { - // Test provider connections in parallel - var testResults sync.Map - var wg sync.WaitGroup slog.Info("Testing provider connections") defer slog.Info("Provider connection tests completed") + + // Test provider connections in parallel + var wg sync.WaitGroup + testResults := csync.NewMap[string, bool]() for _, p := range c.Providers.Seq2() { - if p.Type == catwalk.TypeOpenAI || p.Type == catwalk.TypeAnthropic { - wg.Add(1) - go func(provider ProviderConfig) { - defer wg.Done() - err := provider.TestConnection(c.resolver) - testResults.Store(provider.ID, err == nil) - if err != nil { - slog.Error("Provider connection test failed", "provider", provider.ID, "error", err) - } - }(p) + if p.Type != catwalk.TypeOpenAI && p.Type != catwalk.TypeAnthropic { + continue } + wg.Add(1) + go func(provider ProviderConfig) { + defer wg.Done() + err := provider.TestConnection(c.resolver) + testResults.Set(provider.ID, err == nil) + if err != nil { + slog.Error("Provider connection test failed", "provider", provider.ID, "error", err) + } + }(p) } wg.Wait() // Remove failed providers - testResults.Range(func(key, value any) bool { - providerID := key.(string) - passed := value.(bool) + for providerID, passed := range testResults.Seq2() { if !passed { c.Providers.Del(providerID) } - return true - }) + } } func (c *Config) configureProviders(env env.Env, resolver VariableResolver, knownProviders []catwalk.Provider) error {