on main help sign in
fix: csync.Map
a4dee06Carlos Alexandro Becker
internal/config/load.go+17−18
@@ -93,35 +93,34 @@ func Load(workingDir string, debug bool) (*Config, error) {
93}
93}
94
94
95func (c *Config) removeUnresponsiveProviders() {
95func (c *Config) removeUnresponsiveProviders() {
96− // Test provider connections in parallel
97− var testResults sync.Map
98− var wg sync.WaitGroup
99 slog.Info("Testing provider connections")
96 slog.Info("Testing provider connections")
100 defer slog.Info("Provider connection tests completed")
97 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]()
101 for _, p := range c.Providers.Seq2() {
102 for _, p := range c.Providers.Seq2() {
102− if p.Type == catwalk.TypeOpenAI || p.Type == catwalk.TypeAnthropic {
103+ if p.Type != catwalk.TypeOpenAI && p.Type != catwalk.TypeAnthropic {
103− wg.Add(1)
104+ continue
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)
112 }
105 }
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)
113 }
115 }
114 wg.Wait()
116 wg.Wait()
115
117
116 // Remove failed providers
118 // Remove failed providers
117− testResults.Range(func(key, value any) bool {
119+ for providerID, passed := range testResults.Seq2() {
118− providerID := key.(string)
119− passed := value.(bool)
120 if !passed {
120 if !passed {
121 c.Providers.Del(providerID)
121 c.Providers.Del(providerID)
122 }
122 }
123− return true
124− })
123+ }
125}
124}
126
125
127func (c *Config) configureProviders(env env.Env, resolver VariableResolver, knownProviders []catwalk.Provider) error {
126func (c *Config) configureProviders(env env.Env, resolver VariableResolver, knownProviders []catwalk.Provider) error {