refactor: remove redis direct references from proxy/admin servers
All checks were successful
Cadoles/bouncer/pipeline/head This commit looks good
Cadoles/bouncer/pipeline/pr-master This commit looks good

This commit is contained in:
2025-08-13 16:54:47 +02:00
parent a50f926463
commit ad4f334bc2
16 changed files with 199 additions and 235 deletions

View File

@ -2,7 +2,10 @@ package proxy
import (
"fmt"
"os"
"os/signal"
"strings"
"syscall"
"time"
"forge.cadoles.com/cadoles/bouncer/internal/command/common"
@ -47,15 +50,44 @@ func RunCommand() *cli.Command {
return errors.Wrap(err, "could not initialize director layers")
}
redisClient := setup.NewSharedClient(conf.Redis)
proxyRepository, err := setup.NewProxyRepository(ctx.Context, redisClient)
if err != nil {
return errors.Wrap(err, "could not initialize proxy repository")
}
layerRepository, err := setup.NewLayerRepository(ctx.Context, redisClient)
if err != nil {
return errors.Wrap(err, "could not initialize layer repository")
}
srv := proxy.NewServer(
proxy.WithServerConfig(conf.Proxy),
proxy.WithRedisConfig(conf.Redis),
proxy.WithProxyRepository(proxyRepository),
proxy.WithLayerRepository(layerRepository),
proxy.WithDirectorLayers(layers...),
proxy.WithDirectorCacheTTL(time.Duration(*conf.Proxy.Cache.TTL)),
)
addrs, srvErrs := srv.Start(ctx.Context)
// Clear director's cache on SIGUSR2
sig := make(chan os.Signal, 1)
signal.Notify(sig, syscall.SIGUSR2)
go func() {
for {
select {
case <-sig:
logger.Info(ctx.Context, "received sigusr2, clearing cache")
srv.ClearCache()
case <-ctx.Context.Done():
return
}
}
}()
select {
case addr := <-addrs:
url := fmt.Sprintf("http://%s", addr.String())