on main help sign in
fix: csync.Map
commita4dee0614060db756b3624db82a5d52b31c15337 authorCarlos Alexandro Becker <caarlos0@users.noreply.github.com> dateThu 24 Jul 2025, 11:58 (1 year ago) parentac782d1
1 file changed+17−18
internal/config/load.go+17−18
internal/config/load.go+17−18
@@ -93,35 +93,34 @@ func Load(workingDir string, debug bool) (*Config, error) {
9393}
9494
9595func (c *Config) removeUnresponsiveProviders() {
96− // Test provider connections in parallel
97− var testResults sync.Map
98− var wg sync.WaitGroup
9996 slog.Info("Testing provider connections")
10097 defer slog.Info("Provider connection tests completed")
98+
99+ // Test provider connections in parallel
100+ var wg sync.WaitGroup
101+ testResults := csync.NewMap[string, bool]()
101102 for _, p := range c.Providers.Seq2() {
102− if p.Type == catwalk.TypeOpenAI || p.Type == catwalk.TypeAnthropic {
103− wg.Add(1)
104− go func(provider ProviderConfig) {
105− defer wg.Done()
106− err := provider.TestConnection(c.resolver)
107− testResults.Store(provider.ID, err == nil)
108− if err != nil {
109− slog.Error("Provider connection test failed", "provider", provider.ID, "error", err)
110− }
111− }(p)
103+ if p.Type != catwalk.TypeOpenAI && p.Type != catwalk.TypeAnthropic {
104+ continue
112105 }
106+ wg.Add(1)
107+ go func(provider ProviderConfig) {
108+ defer wg.Done()
109+ err := provider.TestConnection(c.resolver)
110+ testResults.Set(provider.ID, err == nil)
111+ if err != nil {
112+ slog.Error("Provider connection test failed", "provider", provider.ID, "error", err)
113+ }
114+ }(p)
113115 }
114116 wg.Wait()
115117
116118 // Remove failed providers
117− testResults.Range(func(key, value any) bool {
118− providerID := key.(string)
119− passed := value.(bool)
119+ for providerID, passed := range testResults.Seq2() {
120120 if !passed {
121121 c.Providers.Del(providerID)
122122 }
123− return true
124− })
123+ }
125124}
126125
127126func (c *Config) configureProviders(env env.Env, resolver VariableResolver, knownProviders []catwalk.Provider) error {