caddyserver / cache-handler

Distributed HTTP caching module for Caddy
Apache License 2.0
235 stars 17 forks source link

Panics with Redis cache enabled #91

Closed AlyoshaVasilieva closed 6 hours ago

AlyoshaVasilieva commented 4 days ago
{
        email redacted@
        key_type p256
        servers :443 {
                protocols h1 h2 h3
        }
        cert_issuer acme

        order cache before rewrite
        cache {
                log_level debug
                timeout {
                        cache 5s
                        backend 10s
                }
                key {
                        hide
                }
        }
}

http://localhost:4444 {
        cache {
                ttl 31536000s
                mode bypass_request
                redis {
                        configuration {
                                Addr 127.0.0.1:6379
                                ReadTimeout 5s
                                WriteTimeout 5s
                        }
                }
        }

        respond "helo" 400
}

log:

Jun 26 05:57:06 salem systemd[1]: Starting caddy.service - Caddy...
Jun 26 05:57:06 salem caddy[2822446]: caddy.HomeDir=/var/lib/caddy
Jun 26 05:57:06 salem caddy[2822446]: caddy.AppDataDir=/var/lib/caddy/.local/share/caddy
Jun 26 05:57:06 salem caddy[2822446]: caddy.AppConfigDir=/var/lib/caddy/.config/caddy
Jun 26 05:57:06 salem caddy[2822446]: caddy.ConfigAutosavePath=/var/lib/caddy/.config/caddy/autosave.json
Jun 26 05:57:06 salem caddy[2822446]: caddy.Version=v2.8.4 h1:q3pe0wpBj1OcHFZ3n/1nl4V4bxBrYoSoab7rL9BMYNk=
Jun 26 05:57:06 salem caddy[2822446]: runtime.GOOS=linux
Jun 26 05:57:06 salem caddy[2822446]: runtime.GOARCH=amd64
Jun 26 05:57:06 salem caddy[2822446]: runtime.Compiler=gc
Jun 26 05:57:06 salem caddy[2822446]: runtime.NumCPU=5
Jun 26 05:57:06 salem caddy[2822446]: runtime.GOMAXPROCS=5
Jun 26 05:57:06 salem caddy[2822446]: runtime.Version=go1.22.4
Jun 26 05:57:06 salem caddy[2822446]: os.Getwd=/
Jun 26 05:57:06 salem caddy[2822446]: LANG=en_US.UTF-8
Jun 26 05:57:06 salem caddy[2822446]: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
Jun 26 05:57:06 salem caddy[2822446]: NOTIFY_SOCKET=/run/systemd/notify
Jun 26 05:57:06 salem caddy[2822446]: HOME=/var/lib/caddy
Jun 26 05:57:06 salem caddy[2822446]: LOGNAME=caddy
Jun 26 05:57:06 salem caddy[2822446]: USER=caddy
Jun 26 05:57:06 salem caddy[2822446]: INVOCATION_ID=848a49377c7a45b1b99f6a7c28d55c1b
Jun 26 05:57:06 salem caddy[2822446]: JOURNAL_STREAM=8:46325988
Jun 26 05:57:06 salem caddy[2822446]: SYSTEMD_EXEC_PID=2822446
Jun 26 05:57:06 salem caddy[2822446]: {"level":"info","ts":1719406626.3961296,"msg":"using config from file","file":"/etc/caddy/Caddyfile"}
Jun 26 05:57:06 salem caddy[2822446]: {"level":"info","ts":1719406626.3973355,"msg":"adapted config to JSON","adapter":"caddyfile"}
Jun 26 05:57:06 salem caddy[2822446]: {"level":"info","ts":1719406626.3982928,"logger":"admin","msg":"admin endpoint started","address":"localhost:2019","enforce_origin":false,"origins":["//localhost:2019","//[::1]:2019","//127.0.0.1:2019"]}
Jun 26 05:57:06 salem caddy[2822446]: {"level":"info","ts":1719406626.3985784,"logger":"tls.cache.maintenance","msg":"started background certificate maintenance","cache":"0xc0006fdb00"}
Jun 26 05:57:06 salem systemd[1]: Started caddy.service - Caddy.
Jun 26 05:57:06 salem caddy[2822446]: panic: no alive address in InitAddress
Jun 26 05:57:06 salem caddy[2822446]: goroutine 1 [running]:
Jun 26 05:57:06 salem caddy[2822446]: github.com/darkweak/souin/pkg/middleware.NewHTTPCacheHandler({0x29816e8, 0xc00033d830})
Jun 26 05:57:06 salem caddy[2822446]:         github.com/darkweak/souin@v1.6.49/pkg/middleware/middleware.go:66 +0x8ea
Jun 26 05:57:06 salem caddy[2822446]: github.com/caddyserver/cache-handler.(*SouinCaddyMiddleware).Provision(0xc00033d808, {{0x29720d8, 0xc00033e930}, 0xc0002ff6b0, 0xc00099f8c0, {0xc0003c7b00, 0x3, 0x4}, {0x0, 0x0, ...}, ...})
Jun 26 05:57:06 salem caddy[2822446]:         github.com/caddyserver/cache-handler@v0.13.0/httpcache.go:248 +0x18a
Jun 26 05:57:06 salem caddy[2822446]: github.com/caddyserver/caddy/v2.Context.LoadModuleByID({{0x29720d8, 0xc00033e930}, 0xc0002ff6b0, 0xc00099f8c0, {0xc0003c7b00, 0x3, 0x4}, {0x0, 0x0, 0x0}, ...}, ...)
Jun 26 05:57:06 salem caddy[2822446]:         github.com/caddyserver/caddy/v2@v2.8.4/context.go:369 +0x69b
Jun 26 05:57:06 salem caddy[2822446]: github.com/caddyserver/caddy/v2.Context.loadModuleInline({{0x29720d8, 0xc00033e930}, 0xc0002ff6b0, 0xc00099f8c0, {0xc000343f20, 0x2, 0x2}, {0x0, 0x0, 0x0}, ...}, ...)
Jun 26 05:57:06 salem caddy[2822446]:         github.com/caddyserver/caddy/v2@v2.8.4/context.go:419 +0xf0
Jun 26 05:57:06 salem caddy[2822446]: github.com/caddyserver/caddy/v2.Context.LoadModule({{0x29720d8, 0xc00033e930}, 0xc0002ff6b0, 0xc00099f8c0, {0xc000343f20, 0x2, 0x2}, {0x0, 0x0, 0x0}, ...}, ...)
Jun 26 05:57:06 salem caddy[2822446]:         github.com/caddyserver/caddy/v2@v2.8.4/context.go:200 +0x73e
Jun 26 05:57:06 salem caddy[2822446]: github.com/caddyserver/caddy/v2/modules/caddyhttp.(*Route).ProvisionHandlers(0xc00078fd40, {{0x29720d8, 0xc00033e930}, 0xc0002ff6b0, 0xc00099f8c0, {0xc000343f20, 0x2, 0x2}, {0x0, 0x0, ...}, ...}, ...)
Jun 26 05:57:06 salem caddy[2822446]:         github.com/caddyserver/caddy/v2@v2.8.4/modules/caddyhttp/routes.go:154 +0x74
Jun 26 05:57:06 salem caddy[2822446]: github.com/caddyserver/caddy/v2/modules/caddyhttp.RouteList.ProvisionHandlers({0xc00078fd40, 0x1, 0xc00088e0a8?}, {{0x29720d8, 0xc00033e930}, 0xc0002ff6b0, 0xc00099f8c0, {0xc000343f20, 0x2, 0x2}, ...}, ...)
Jun 26 05:57:06 salem caddy[2822446]:         github.com/caddyserver/caddy/v2@v2.8.4/modules/caddyhttp/routes.go:209 +0xa6
Jun 26 05:57:06 salem caddy[2822446]: github.com/caddyserver/caddy/v2/modules/caddyhttp.RouteList.Provision({0xc00078fd40, 0x1, 0x1}, {{0x29720d8, 0xc00033e930}, 0xc0002ff6b0, 0xc00099f8c0, {0xc000343f20, 0x2, 0x2}, ...})
Jun 26 05:57:06 salem caddy[2822446]:         github.com/caddyserver/caddy/v2@v2.8.4/modules/caddyhttp/routes.go:186 +0xbe
Jun 26 05:57:06 salem caddy[2822446]: github.com/caddyserver/caddy/v2/modules/caddyhttp.(*Subroute).Provision(0xc000343ec0, {{0x29720d8, 0xc00033e930}, 0xc0002ff6b0, 0xc00099f8c0, {0xc000343f20, 0x2, 0x2}, {0x0, 0x0, ...}, ...})
Jun 26 05:57:06 salem caddy[2822446]:         github.com/caddyserver/caddy/v2@v2.8.4/modules/caddyhttp/subroute.go:58 +0x7b
Jun 26 05:57:06 salem caddy[2822446]: github.com/caddyserver/caddy/v2.Context.LoadModuleByID({{0x29720d8, 0xc00033e930}, 0xc0002ff6b0, 0xc00099f8c0, {0xc000343f20, 0x2, 0x2}, {0x0, 0x0, 0x0}, ...}, ...)
Jun 26 05:57:06 salem caddy[2822446]:         github.com/caddyserver/caddy/v2@v2.8.4/context.go:369 +0x69b
Jun 26 05:57:06 salem caddy[2822446]: github.com/caddyserver/caddy/v2.Context.loadModuleInline({{0x29720d8, 0xc00033e930}, 0xc0002ff6b0, 0xc00099f8c0, {0xc0007b0e90, 0x1, 0x1}, {0x0, 0x0, 0x0}, ...}, ...)
Jun 26 05:57:06 salem caddy[2822446]:         github.com/caddyserver/caddy/v2@v2.8.4/context.go:419 +0xf0
Jun 26 05:57:06 salem caddy[2822446]: github.com/caddyserver/caddy/v2.Context.LoadModule({{0x29720d8, 0xc00033e930}, 0xc0002ff6b0, 0xc00099f8c0, {0xc0007b0e90, 0x1, 0x1}, {0x0, 0x0, 0x0}, ...}, ...)
Jun 26 05:57:06 salem caddy[2822446]:         github.com/caddyserver/caddy/v2@v2.8.4/context.go:200 +0x73e
Jun 26 05:57:06 salem caddy[2822446]: github.com/caddyserver/caddy/v2/modules/caddyhttp.(*Route).ProvisionHandlers(0xc00078fb90, {{0x29720d8, 0xc00033e930}, 0xc0002ff6b0, 0xc00099f8c0, {0xc0007b0e90, 0x1, 0x1}, {0x0, 0x0, ...}, ...}, ...)
Jun 26 05:57:06 salem caddy[2822446]:         github.com/caddyserver/caddy/v2@v2.8.4/modules/caddyhttp/routes.go:154 +0x74
Jun 26 05:57:06 salem caddy[2822446]: github.com/caddyserver/caddy/v2/modules/caddyhttp.RouteList.ProvisionHandlers({0xc00078fb90, 0x1, 0xc00015e0c0?}, {{0x29720d8, 0xc00033e930}, 0xc0002ff6b0, 0xc00099f8c0, {0xc0007b0e90, 0x1, 0x1}, ...}, ...)
Jun 26 05:57:06 salem caddy[2822446]:         github.com/caddyserver/caddy/v2@v2.8.4/modules/caddyhttp/routes.go:209 +0xa6
Jun 26 05:57:06 salem caddy[2822446]: github.com/caddyserver/caddy/v2/modules/caddyhttp.(*App).Provision(0xc0006c1a40, {{0x29720d8, 0xc00033e930}, 0xc0002ff6b0, 0xc00099f8c0, {0xc0007b0e90, 0x1, 0x1}, {0x0, 0x0, ...}, ...})
Jun 26 05:57:06 salem caddy[2822446]:         github.com/caddyserver/caddy/v2@v2.8.4/modules/caddyhttp/app.go:291 +0xd85
Jun 26 05:57:06 salem caddy[2822446]: github.com/caddyserver/caddy/v2.Context.LoadModuleByID({{0x2972110, 0xc0004a18b0}, 0xc0002ff6b0, 0xc00099f8c0, {0xc0007b0e90, 0x1, 0x1}, {0x0, 0x0, 0x0}, ...}, ...)
Jun 26 05:57:06 salem caddy[2822446]:         github.com/caddyserver/caddy/v2@v2.8.4/context.go:369 +0x69b
Jun 26 05:57:06 salem caddy[2822446]: github.com/caddyserver/caddy/v2.Context.App({{0x2972110, 0xc0004a18b0}, 0xc0002ff6b0, 0xc00099f8c0, {0x0, 0x0, 0x0}, {0x0, 0x0, 0x0}, ...}, ...)
Jun 26 05:57:06 salem caddy[2822446]:         github.com/caddyserver/caddy/v2@v2.8.4/context.go:445 +0xf4
Jun 26 05:57:06 salem caddy[2822446]: github.com/caddyserver/caddy/v2.run.func3(...)
Jun 26 05:57:06 salem caddy[2822446]:         github.com/caddyserver/caddy/v2@v2.8.4/caddy.go:488
Jun 26 05:57:06 salem caddy[2822446]: github.com/caddyserver/caddy/v2.run(0x2000107?, 0x1)
Jun 26 05:57:06 salem caddy[2822446]:         github.com/caddyserver/caddy/v2@v2.8.4/caddy.go:493 +0x5e5
Jun 26 05:57:06 salem caddy[2822446]: github.com/caddyserver/caddy/v2.unsyncedDecodeAndRun({0xc0007a2c00, 0xa8a, 0xc00}, 0x1)
Jun 26 05:57:06 salem caddy[2822446]:         github.com/caddyserver/caddy/v2@v2.8.4/caddy.go:343 +0x145
Jun 26 05:57:06 salem caddy[2822446]: github.com/caddyserver/caddy/v2.changeConfig({0x2368b41, 0x4}, {0x23704d3, 0x7}, {0xc0007a2000, 0xa8a, 0xc00}, {0x0, 0x0}, 0x1)
Jun 26 05:57:06 salem caddy[2822446]:         github.com/caddyserver/caddy/v2@v2.8.4/caddy.go:234 +0x6b6
Jun 26 05:57:06 salem caddy[2822446]: github.com/caddyserver/caddy/v2.Load({0xc0007a2000, 0xa8a, 0xc00}, 0x1)
Jun 26 05:57:06 salem caddy[2822446]:         github.com/caddyserver/caddy/v2@v2.8.4/caddy.go:133 +0x236
Jun 26 05:57:06 salem caddy[2822446]: github.com/caddyserver/caddy/v2/cmd.cmdRun({0x0?})
Jun 26 05:57:06 salem caddy[2822446]:         github.com/caddyserver/caddy/v2@v2.8.4/cmd/commandfuncs.go:231 +0x831
Jun 26 05:57:06 salem caddy[2822446]: github.com/caddyserver/caddy/v2/cmd.init.1.func2.WrapCommandFuncForCobra.1(0xc00099c908, {0x2368b9d?, 0x4?, 0x2368b71?})
Jun 26 05:57:06 salem caddy[2822446]:         github.com/caddyserver/caddy/v2@v2.8.4/cmd/cobra.go:137 +0x2f
Jun 26 05:57:06 salem caddy[2822446]: github.com/spf13/cobra.(*Command).execute(0xc00099c908, {0xc0002466c0, 0x3, 0x3})
Jun 26 05:57:06 salem caddy[2822446]:         github.com/spf13/cobra@v1.8.0/command.go:983 +0xaca
Jun 26 05:57:06 salem caddy[2822446]: github.com/spf13/cobra.(*Command).ExecuteC(0x3bd6760)
Jun 26 05:57:06 salem caddy[2822446]:         github.com/spf13/cobra@v1.8.0/command.go:1115 +0x3ff
Jun 26 05:57:06 salem caddy[2822446]: github.com/spf13/cobra.(*Command).Execute(...)
Jun 26 05:57:06 salem caddy[2822446]:         github.com/spf13/cobra@v1.8.0/command.go:1039
Jun 26 05:57:06 salem caddy[2822446]: github.com/caddyserver/caddy/v2/cmd.Main()
Jun 26 05:57:06 salem caddy[2822446]:         github.com/caddyserver/caddy/v2@v2.8.4/cmd/main.go:75 +0x1d8
Jun 26 05:57:06 salem caddy[2822446]: main.main()
Jun 26 05:57:06 salem caddy[2822446]:         caddy/main.go:15 +0xf
Jun 26 05:57:06 salem systemd[1]: caddy.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Jun 26 05:57:06 salem systemd[1]: caddy.service: Failed with result 'exit-code'.

Redis is up and responds to redis-cli ping.

This is slightly minimized from a Caddyfile I use. It worked with whatever plugin version I had with caddy v2.7.6, but re-building with Caddy v2.8.4 and cache-handler v0.13.0 makes it usually panic on launch. (I think it's worked a couple times, but I can repeatedly systemctl restart caddy and have it be dead when I check its status.)

Build is xcaddy build --with github.com/caddyserver/cache-handler --with github.com/caddyserver/replace-response --with github.com/caddy-dns/scaleway --with github.com/caddy-dns/cloudflare

edit: Running on Debian 12.

darkweak commented 3 days ago

Hello @AlyoshaVasilieva thank you for your feedback. Reading your logs I see panic: no alive address in InitAddress so it can't reach the server. I think that's because you're setting Addr in your configuration block subdirective but it should be InitAddress as mentioned in the official documentation but the cache-handler documentation is not updated. I'm sorry about that, I would appreciate a PR to update the doc, or I will have time to spend on it on the next week.

darkweak commented 6 hours ago

Closed by #92