check / check (push) Canceled after 0s
The new package internal/imageproxy holds Proxy, which was imgcache.Service, with its Config, ImageResponse, CacheStatus and errors. NewProxy makes and registers the counters of upstream fetches and transforms. internal/imgcache holds the cache only, with its hit and miss counters, and imgcache.CacheConfig is imgcache.Config. The cache reads and writes each kind it keeps with one pair of methods: Variant and PutVariant, Source and PutSource, Failure and PutFailure. Source replaces LookupSource followed by GetSourceContent. imgcache.go and module.go are gone. The proxy's tests moved with it. They reach the cache through its database, its state directory and its metrics registry, and run its reconciliation pass with a second cache, as pixad does at startup. Model: opus-5-5
32 lines
966 B
Go
32 lines
966 B
Go
package imgcache
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/prometheus/client_golang/prometheus"
|
|
)
|
|
|
|
// registerCounters makes the cache's counters and registers them on
|
|
// metricsRegistry. The counters are kept in memory, so adding to one waits
|
|
// for nothing and makes no database call. It fails when metricsRegistry
|
|
// already holds counters of the same names.
|
|
func (c *Cache) registerCounters(metricsRegistry prometheus.Registerer) error {
|
|
c.cacheHits = prometheus.NewCounter(prometheus.CounterOpts{
|
|
Name: "pixa_cache_hits_total",
|
|
Help: "Image requests served from the cache.",
|
|
})
|
|
c.cacheMisses = prometheus.NewCounter(prometheus.CounterOpts{
|
|
Name: "pixa_cache_misses_total",
|
|
Help: "Image requests not served from the cache.",
|
|
})
|
|
|
|
for _, counter := range []prometheus.Counter{c.cacheHits, c.cacheMisses} {
|
|
err := metricsRegistry.Register(counter)
|
|
if err != nil {
|
|
return fmt.Errorf("failed to register the cache's counters: %w", err)
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|