Skip to content

Commit adbb55e

Browse files
authored
Disable caching the registry (#1115)
Signed-off-by: Radoslav Dimitrov <[email protected]>
1 parent 7427451 commit adbb55e

File tree

2 files changed

+44
-60
lines changed

2 files changed

+44
-60
lines changed

pkg/registry/provider_embedded.go

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,13 @@ import (
55
"encoding/json"
66
"fmt"
77
"strings"
8-
"sync"
98
)
109

1110
//go:embed data/registry.json
1211
var embeddedRegistryFS embed.FS
1312

1413
// EmbeddedRegistryProvider provides registry data from embedded JSON files
1514
type EmbeddedRegistryProvider struct {
16-
registry *Registry
17-
registryOnce sync.Once
18-
registryErr error
1915
}
2016

2117
// NewEmbeddedRegistryProvider creates a new embedded registry provider
@@ -24,26 +20,23 @@ func NewEmbeddedRegistryProvider() *EmbeddedRegistryProvider {
2420
}
2521

2622
// GetRegistry returns the embedded registry data
27-
func (p *EmbeddedRegistryProvider) GetRegistry() (*Registry, error) {
28-
p.registryOnce.Do(func() {
29-
data, err := embeddedRegistryFS.ReadFile("data/registry.json")
30-
if err != nil {
31-
p.registryErr = fmt.Errorf("failed to read embedded registry data: %w", err)
32-
return
33-
}
23+
func (*EmbeddedRegistryProvider) GetRegistry() (*Registry, error) {
24+
data, err := embeddedRegistryFS.ReadFile("data/registry.json")
25+
if err != nil {
26+
return nil, fmt.Errorf("failed to read embedded registry data: %w", err)
27+
}
3428

35-
p.registry, p.registryErr = parseRegistryData(data)
36-
if p.registryErr != nil {
37-
return
38-
}
29+
registry, err := parseRegistryData(data)
30+
if err != nil {
31+
return nil, err
32+
}
3933

40-
// Set name field on each server based on map key
41-
for name, server := range p.registry.Servers {
42-
server.Name = name
43-
}
44-
})
34+
// Set name field on each server based on map key
35+
for name, server := range registry.Servers {
36+
server.Name = name
37+
}
4538

46-
return p.registry, p.registryErr
39+
return registry, nil
4740
}
4841

4942
// GetServer returns a specific server by name

pkg/registry/provider_remote.go

Lines changed: 30 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"io"
66
"net/http"
77
"strings"
8-
"sync"
98

109
"github.com/stacklok/toolhive/pkg/networking"
1110
)
@@ -14,9 +13,6 @@ import (
1413
type RemoteRegistryProvider struct {
1514
registryURL string
1615
allowPrivateIp bool
17-
registry *Registry
18-
registryOnce sync.Once
19-
registryErr error
2016
}
2117

2218
// NewRemoteRegistryProvider creates a new remote registry provider
@@ -29,46 +25,41 @@ func NewRemoteRegistryProvider(registryURL string, allowPrivateIp bool) *RemoteR
2925

3026
// GetRegistry returns the remote registry data
3127
func (p *RemoteRegistryProvider) GetRegistry() (*Registry, error) {
32-
p.registryOnce.Do(func() {
33-
client, err := networking.NewHttpClientBuilder().
34-
WithPrivateIPs(p.allowPrivateIp).
35-
Build()
36-
if err != nil {
37-
p.registryErr = fmt.Errorf("failed to build http client: %w", err)
38-
return
39-
}
40-
resp, err := client.Get(p.registryURL)
41-
if err != nil {
42-
p.registryErr = fmt.Errorf("failed to fetch registry data from URL %s: %w", p.registryURL, err)
43-
return
44-
}
45-
defer resp.Body.Close()
28+
client, err := networking.NewHttpClientBuilder().
29+
WithPrivateIPs(p.allowPrivateIp).
30+
Build()
31+
if err != nil {
32+
return nil, fmt.Errorf("failed to build http client: %w", err)
33+
}
4634

47-
// Check if the response status code is OK
48-
if resp.StatusCode != http.StatusOK {
49-
p.registryErr = fmt.Errorf("response status code from URL %s not OK: status code %d", p.registryURL, resp.StatusCode)
50-
return
51-
}
35+
resp, err := client.Get(p.registryURL)
36+
if err != nil {
37+
return nil, fmt.Errorf("failed to fetch registry data from URL %s: %w", p.registryURL, err)
38+
}
39+
defer resp.Body.Close()
5240

53-
// Read the response body
54-
data, err := io.ReadAll(resp.Body)
55-
if err != nil {
56-
p.registryErr = fmt.Errorf("failed to read registry data from response body: %w", err)
57-
return
58-
}
41+
// Check if the response status code is OK
42+
if resp.StatusCode != http.StatusOK {
43+
return nil, fmt.Errorf("response status code from URL %s not OK: status code %d", p.registryURL, resp.StatusCode)
44+
}
5945

60-
p.registry, p.registryErr = parseRegistryData(data)
61-
if p.registryErr != nil {
62-
return
63-
}
46+
// Read the response body
47+
data, err := io.ReadAll(resp.Body)
48+
if err != nil {
49+
return nil, fmt.Errorf("failed to read registry data from response body: %w", err)
50+
}
6451

65-
// Set name field on each server based on map key
66-
for name, server := range p.registry.Servers {
67-
server.Name = name
68-
}
69-
})
52+
registry, err := parseRegistryData(data)
53+
if err != nil {
54+
return nil, err
55+
}
56+
57+
// Set name field on each server based on map key
58+
for name, server := range registry.Servers {
59+
server.Name = name
60+
}
7061

71-
return p.registry, p.registryErr
62+
return registry, nil
7263
}
7364

7465
// GetServer returns a specific server by name

0 commit comments

Comments
 (0)