on main help sign in
fix: always fetch providers live and not in background (#1281)
092b351Andrey Nering
internal/config/provider.go+1−33
@@ -126,7 +126,7 @@ func Providers(cfg *Config) ([]catwalk.Provider, error) {
126}
126}
127
127
128func loadProviders(autoUpdateDisabled bool, client ProviderClient, path string) ([]catwalk.Provider, error) {
128func loadProviders(autoUpdateDisabled bool, client ProviderClient, path string) ([]catwalk.Provider, error) {
129− cacheIsStale, cacheExists := isCacheStale(path)
129+ _, cacheExists := isCacheStale(path)
130
130
131 catwalkGetAndSave := func() ([]catwalk.Provider, error) {
131 catwalkGetAndSave := func() ([]catwalk.Provider, error) {
132 providers, err := client.GetProviders()
132 providers, err := client.GetProviders()
@@ -142,25 +142,6 @@ func loadProviders(autoUpdateDisabled bool, client ProviderClient, path string)
142 return providers, nil
142 return providers, nil
143 }
143 }
144
144
145− backgroundCacheUpdate := func() {
146− go func() {
147− slog.Info("Updating providers cache in background", "path", path)
148−
149− providers, err := client.GetProviders()
150− if err != nil {
151− slog.Error("Failed to fetch providers in background from Catwalk", "error", err)
152− return
153− }
154− if len(providers) == 0 {
155− slog.Error("Empty providers list from Catwalk")
156− return
157− }
158− if err := saveProvidersInCache(path, providers); err != nil {
159− slog.Error("Failed to update providers.json in background", "error", err)
160− }
161− }()
162− }
163−
164 switch {
145 switch {
165 case autoUpdateDisabled:
146 case autoUpdateDisabled:
166 slog.Warn("Providers auto-update is disabled")
147 slog.Warn("Providers auto-update is disabled")
@@ -177,19 +158,6 @@ func loadProviders(autoUpdateDisabled bool, client ProviderClient, path string)
177 }
158 }
178 return providers, nil
159 return providers, nil
179
160
180− case cacheExists && !cacheIsStale:
181− slog.Info("Recent providers cache is available.", "path", path)
182−
183− providers, err := loadProvidersFromCache(path)
184− if err != nil {
185− return nil, err
186− }
187− if len(providers) == 0 {
188− return catwalkGetAndSave()
189− }
190− backgroundCacheUpdate()
191− return providers, nil
192−
193 default:
161 default:
194 slog.Info("Cache is not available or is stale. Fetching providers from Catwalk.", "path", path)
162 slog.Info("Cache is not available or is stale. Fetching providers from Catwalk.", "path", path)
195
163
internal/config/provider_test.go+1−1
@@ -57,7 +57,7 @@ func TestProvider_loadProvidersWithIssues(t *testing.T) {
57 if err != nil {
57 if err != nil {
58 t.Fatalf("Failed to write old providers to file: %v", err)
58 t.Fatalf("Failed to write old providers to file: %v", err)
59 }
59 }
60− providers, err := loadProviders(false, client, tmpPath)
60+ providers, err := loadProviders(true, client, tmpPath)
61 require.NoError(t, err)
61 require.NoError(t, err)
62 require.NotNil(t, providers)
62 require.NotNil(t, providers)
63 require.Len(t, providers, 1)
63 require.Len(t, providers, 1)