Cache configuration lost on reload
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
Hướng nghiên cứu
Tái hiện vấn đề với Caddyfile được hiển thị bằng cách khởi động Caddy, nạp đầy cache Nuts, sau đó chạy caddy reload --config /etc/caddy/Caddyfile. Theo dõi quá trình reload của cache handler và khởi tạo storage Nuts, tập trung vào lý do reload chọn storage mặc định. Hoàn thành khi storage /tmp/nuts-configuration đã cấu hình vẫn hoạt động sau reload, không xuất hiện cảnh báo về storage mặc định và các request được cache vẫn báo cáo hit.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Hello,
whenever I reload Caddy, either automatically by using the -w flag of caddy run or by running caddy reload --config /etc/caddy/Caddyfile, the cache seems to loose its configuration.
When first starting caddy, everything looks fine:
{"level":"info","ts":1764181169.6021588,"msg":"maxprocs: Leaving GOMAXPROCS=6: CPU quota undefined"}
{"level":"info","ts":1764181169.6022556,"msg":"GOMEMLIMIT is updated","package":"github.com/KimMachineGun/automemlimit/memlimit","GOMEMLIMIT":15010014412,"previous":9223372036854775807}
{"level":"info","ts":1764181169.602276,"msg":"using config from file","file":"/etc/caddy/Caddyfile"}
{"level":"info","ts":1764181169.603072,"msg":"adapted config to JSON","adapter":"caddyfile"}
{"level":"warn","ts":1764181169.6030767,"msg":"Caddyfile input is not formatted; run 'caddy fmt --overwrite' to fix inconsistencies","adapter":"caddyfile","file":"/etc/caddy/Caddyfile","line":4}
{"level":"info","ts":1764181169.603848,"logger":"admin","msg":"admin endpoint started","address":"localhost:2019","enforce_origin":false,"origins":["//localhost:2019","//[::1]:2019","//127.0.0.1:2019"]}
{"level":"info","ts":1764181169.604289,"logger":"tls.cache.maintenance","msg":"started background certificate maintenance","cache":"0xc0001b2180"}
{"level":"info","ts":1764181169.6060863,"logger":"http.handlers.cache","msg":"Set backend timeout to 10s"}
{"level":"info","ts":1764181169.6061225,"logger":"http.handlers.cache","msg":"Set cache timeout to 10ms"}
{"level":"info","ts":1764181169.606124,"logger":"http.handlers.cache","msg":"Souin configuration is now loaded."}
{"level":"warn","ts":1764181169.6062827,"logger":"http","msg":"HTTP/2 skipped because it requires TLS","network":"tcp","addr":":4443"}
{"level":"warn","ts":1764181169.6062887,"logger":"http","msg":"HTTP/3 skipped because it requires TLS","network":"tcp","addr":":4443"}
{"level":"info","ts":1764181169.60629,"logger":"http.log","msg":"server running","name":"srv0","protocols":["h1","h2","h3"]}
{"level":"info","ts":1764181169.6107454,"msg":"autosaved config (load with --resume flag)","file":"/root/.config/caddy/autosave.json"}
{"level":"info","ts":1764181169.6107526,"msg":"serving initial configuration"}
{"level":"info","ts":1764181169.6152978,"logger":"tls","msg":"cleaning storage unit","storage":"FileStorage:/root/.local/share/caddy"}
{"level":"info","ts":1764181169.6198232,"logger":"tls","msg":"finished cleaning storage units"}
I can verify that caching works:
$ curl -i localhost:4443/nuts-configuration
HTTP/1.1 200 OK
Cache-Control:
Cache-Status: Souin; fwd=uri-miss; stored; key=GET-http-localhost:4443-/nuts-configuration
Content-Length: 10
Content-Type: text/plain; charset=utf-8
Server: Caddy
Date: Wed, 26 Nov 2025 18:25:42 GMT
Hello nuts
$ curl -i localhost:4443/nuts-configuration
HTTP/1.1 200 OK
Age: 2
Cache-Control:
Cache-Status: Souin; hit; ttl=1498; key=GET-http-localhost:4443-/nuts-configuration; detail=NUTS
Content-Length: 10
Content-Type: text/plain; charset=utf-8
Date: Wed, 26 Nov 2025 18:25:42 GMT
Server: Caddy
Hello nuts
$ curl -i localhost:4443/nuts-configuration
HTTP/1.1 200 OK
Age: 4
Cache-Control:
Cache-Status: Souin; hit; ttl=1496; key=GET-http-localhost:4443-/nuts-configuration; detail=NUTS
Content-Length: 10
Content-Type: text/plain; charset=utf-8
Date: Wed, 26 Nov 2025 18:25:42 GMT
Server: Caddy
Hello nuts
Then after editing a trivial thing, e.g. appending a number to the static response body, and running caddy reload --config /etc/caddy/Caddyfile:
{"level":"info","ts":1764181205.652986,"logger":"admin.api","msg":"received request","method":"POST","host":"localhost:2019","uri":"/load","remote_ip":"127.0.0.1","remote_port":"53638","headers":{"Accept-Encoding":["gzip"],"Content-Length":["1513"],"Content-Type":["application/json"],"Origin":["http://localhost:2019"],"User-Agent":["Go-http-client/1.1"]}}
{"level":"info","ts":1764181205.6536577,"logger":"admin","msg":"admin endpoint started","address":"localhost:2019","enforce_origin":false,"origins":["//localhost:2019","//[::1]:2019","//127.0.0.1:2019"]}
{"level":"warn","ts":1764181205.6540132,"logger":"http.handlers.cache","msg":"You're running Souin with the default storage that is not optimized and for development purpose. We recommend to use at least one of the storages from https://github.com/darkweak/storages"}
{"level":"info","ts":1764181205.654029,"logger":"http.handlers.cache","msg":"Set backend timeout to 10s"}
{"level":"info","ts":1764181205.6540427,"logger":"http.handlers.cache","msg":"Set cache timeout to 10ms"}
{"level":"info","ts":1764181205.6540506,"logger":"http.handlers.cache","msg":"Souin configuration is now loaded."}
{"level":"warn","ts":1764181205.6541312,"logger":"http","msg":"HTTP/2 skipped because it requires TLS","network":"tcp","addr":":4443"}
{"level":"warn","ts":1764181205.6541579,"logger":"http","msg":"HTTP/3 skipped because it requires TLS","network":"tcp","addr":":4443"}
{"level":"info","ts":1764181205.6541655,"logger":"http.log","msg":"server running","name":"srv0","protocols":["h1","h2","h3"]}
{"level":"info","ts":1764181205.6541889,"logger":"http","msg":"servers shutting down with eternal grace period"}
{"level":"info","ts":1764181205.6543622,"msg":"autosaved config (load with --resume flag)","file":"/root/.config/caddy/autosave.json"}
{"level":"info","ts":1764181205.6543758,"logger":"admin.api","msg":"load complete"}
{"level":"info","ts":1764181205.654874,"logger":"admin","msg":"stopped previous server","address":"localhost:2019"}
Note the You're running Souin with the default storage that is not optimized and for development purpose. We recommend to use at least one of the storages from https://github.com/darkweak/storages message.
Afterwards the cache is gone, note the uri-miss in the Cache-Status header:
$ curl -i localhost:4443/nuts-configuration
HTTP/1.1 200 OK
Cache-Control:
Cache-Status: Souin; fwd=uri-miss; stored; key=GET-http-localhost:4443-/nuts-configuration
Content-Length: 11
Content-Type: text/plain; charset=utf-8
Server: Caddy
Date: Wed, 26 Nov 2025 18:26:10 GMT
Hello nuts2
After a complete Caddy restart, the cache will be back!
This is my Caddyfile:
:4443
respond "Hello World!"
route /nuts-configuration {
cache {
ttl 1500s
nuts {
configuration {
Dir /tmp/nuts-configuration
EntryIdxMode 1
RWMode 0
SegmentSize 1024
NodeNum 42
SyncEnable true
StartFileLoadingMode 1
}
}
}
respond "Hello nuts"
}
- Ngôn ngữ chính
- Go
- Star
- 395
- Fork
- 30
- Merge trung bình
- 32 phút
- Pull request đã merge (30 ngày)
- 1
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của caddyserver/cache-handler
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 72/100
caddyserver/cache-handler#138 · 1 bình luận · 3 reaction ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
caddyserver/cache-handler#145 ·
-
Admin API purge/invalidation still panics with nil pointer on v0.16.0 (same root cause as #140)Đang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 76/100
caddyserver/cache-handler#143 · 2 bình luận ·
-
Can not flush cacheĐang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 55/100
caddyserver/cache-handler#140 · 4 bình luận · 1 reaction ·
-
`Incomming` has a typoĐang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 45/100
caddyserver/cache-handler#139 · 1 bình luận ·
Tất cả issue của caddyserver/cache-handler
Issue tương tự
-
[schema-coverage] elasticstack_kibana_security_detection_ruleCó thể đã có người làm @github-actions đã nhận hôm nay. Đang mởacceptance-tests phase-coding schema-coverage testing triaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
elastic/terraform-provider-elasticstack#5186 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
jaegertracing/jaeger#9830 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
apache/rocketmq-dashboard#6318 ·
Maintainer thường phản hồi trong vòng 5 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 83/100
GoogleCloudPlatform/opentelemetry-operations-collector#710 ·
Maintainer thường phản hồi trong vòng 1 ngày