Skip to content

Commit df606eb

Browse files
committed
idk bazel
1 parent 31ca740 commit df606eb

File tree

3 files changed

+21
-6
lines changed

3 files changed

+21
-6
lines changed

internal/services/caches/caches.go

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package caches
22

33
import (
4+
"context"
45
"fmt"
56
"os"
67
"time"
@@ -43,6 +44,15 @@ type Caches struct {
4344
// dispatcher handles routing of invalidation events to all caches in this process.
4445
// This is not exported as it's an internal implementation detail.
4546
dispatcher *clustering.InvalidationDispatcher
47+
48+
// registry maps cache resource names to invalidation handlers, used by the
49+
// internal cache invalidation endpoint.
50+
registry *middleware.InvalidationRegistry
51+
}
52+
53+
// Invalidate removes the given keys from the named cache.
54+
func (c *Caches) Invalidate(ctx context.Context, cacheName string, keys []string) error {
55+
return c.registry.Invalidate(ctx, cacheName, keys)
4656
}
4757

4858
// Close shuts down the caches and cleans up resources.
@@ -175,6 +185,8 @@ func New(config Config) (Caches, error) {
175185
}()
176186
}
177187

188+
registry := middleware.NewInvalidationRegistry()
189+
178190
ratelimitNamespace, err := createCache(
179191
cache.Config[cache.ScopedKey, db.FindRatelimitNamespace]{
180192
Fresh: time.Minute,
@@ -261,12 +273,13 @@ func New(config Config) (Caches, error) {
261273

262274
initialized = true
263275
return Caches{
264-
RatelimitNamespace: middleware.WithTracing(ratelimitNamespace),
265-
LiveApiByID: middleware.WithTracing(liveApiByID),
266-
VerificationKeyByHash: middleware.WithTracing(verificationKeyByHash),
267-
ClickhouseSetting: middleware.WithTracing(clickhouseSetting),
268-
KeyAuthToApiRow: middleware.WithTracing(keyAuthToApiRow),
269-
ApiToKeyAuthRow: middleware.WithTracing(apiToKeyAuthRow),
276+
RatelimitNamespace: middleware.WithInvalidation(middleware.WithTracing(ratelimitNamespace), "ratelimit_namespace", registry, cache.ScopedKeyFromString),
277+
LiveApiByID: middleware.WithInvalidation(middleware.WithTracing(liveApiByID), "live_api_by_id", registry, cache.ScopedKeyFromString),
278+
VerificationKeyByHash: middleware.WithInvalidation(middleware.WithTracing(verificationKeyByHash), "verification_key_by_hash", registry, middleware.StringKeyParser),
279+
ClickhouseSetting: middleware.WithInvalidation(middleware.WithTracing(clickhouseSetting), "clickhouse_setting", registry, middleware.StringKeyParser),
280+
KeyAuthToApiRow: middleware.WithInvalidation(middleware.WithTracing(keyAuthToApiRow), "key_auth_to_api_row", registry, cache.ScopedKeyFromString),
281+
ApiToKeyAuthRow: middleware.WithInvalidation(middleware.WithTracing(apiToKeyAuthRow), "api_to_key_auth_row", registry, cache.ScopedKeyFromString),
270282
dispatcher: dispatcher,
283+
registry: registry,
271284
}, nil
272285
}

pkg/cache/middleware/invalidation.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ type InvalidationRegistry struct {
1919
// NewInvalidationRegistry creates an empty registry.
2020
func NewInvalidationRegistry() *InvalidationRegistry {
2121
return &InvalidationRegistry{
22+
mu: sync.RWMutex{},
2223
handlers: make(map[string]func(ctx context.Context, keys []string) error),
2324
}
2425
}

svc/api/integration/harness.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ func (h *Harness) RunAPI(config ApiConfig) *ApiCluster {
166166
CtrlToken: "your-local-dev-key",
167167
LogSampleRate: 1.0,
168168
LogSlowThreshold: time.Second,
169+
DashboardToken: "",
169170
}
170171

171172
// Start API server in goroutine

0 commit comments

Comments
 (0)