Compare commits

..
Author SHA1 Message Date
maxlerebourg 1a6d812bd4 Renovate update version.go 2026-07-26 14:10:43 +02:00
maxlerebourg a7915ee370 🐛 fix test 2026-07-26 13:48:55 +02:00
maxlerebourg 8335f2c3e7 🍱 add tests for roundRobin 2026-07-26 13:45:50 +02:00
maxlerebourg 9c8a391eff 🐛 fix test label; remove log 2026-07-26 13:19:41 +02:00
maxlerebourg 6b5dc0243f 🐛 fix redis/run.sh 2026-07-26 13:04:10 +02:00
maxlerebourg 947f56f265 🐛 readd redis/run.sh 2026-07-26 12:56:55 +02:00
maxlerebourg 75227becca 🍱 add test for rotation 2026-07-26 03:04:42 +02:00
mhxandClaude Opus 4.8 0344e82223 🐛 fix(cache): avoid nil-pointer panic on empty redis read
redisCache.get fell through to `switch err.Error()` when Get returned a
nil error with an empty value, panicking on the nil error. simpleredis
never returns that combination today (a miss yields RedisMiss), so it
was unreachable in practice — but the read path is safer treating an
empty, error-free read as a cache miss, which also guarantees err is
non-nil before err.Error() is called.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-25 21:38:03 +02:00
mhxandClaude Opus 4.8 73e53c7d69 📝 docs: note replicas don't fall back to primary on outage
When RedisCacheReadHosts is set, reads are not retried against the
primary if the replicas are unreachable. Document that this, combined
with the default RedisCacheUnreachableBlock=true, means a replica outage
can block traffic while the primary is healthy.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-25 21:24:11 +02:00
mhxandClaude Opus 4.8 96beb9192e test(e2e/redis): exercise read-from-replica path
The redis scenario only set redisCacheHost, so it validated the writer
but never the round-robin reader path this feature adds. Split the mock
into two roles: the primary (--redis-addr) now answers every GET with a
miss, while the replica (--redis-read-addr) serves the hardcoded
verdicts. The scenario points redisCacheReadHosts at the replica (twice,
to drive round-robin), so the banned-IP-blocked assertion only passes if
the plugin actually reads decisions from the replica rather than the
primary.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-25 21:21:20 +02:00
mhxandClaude Opus 4.8 8eceba35b7 📝 test(e2e/redis): fix swapped IP→verdict comments
The mock returns "f" (not banned) for 1.2.3.4 and "t" (banned) for
1.2.3.5, and the run.sh assertions match that. Both doc comments
described the opposite mapping; correct them to match the code.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-25 21:11:42 +02:00
maxlerebourg 440ad19c9d Merge remote-tracking branch 'main/main' 2026-07-25 19:17:47 +02:00
maxlerebourg e469cd5786 🍱 fix permission 2026-07-25 16:40:06 +02:00
maxlerebourg 1e0dadedb2 add testing for redis with mock 2026-07-25 16:30:36 +02:00
maxlerebourg 6958432a7c 🍱 fix logic 2026-07-25 15:35:08 +02:00
Sam Toxopeus ad7596ff85 feat: Allow cache reading from replicas 2026-07-23 13:03:57 +02:00
14 changed files with 17 additions and 17 deletions
+3 -3
View File
@@ -1,6 +1,6 @@
name: Renovate
# Self-hosted Renovate: opens dependency-update PRs on a daily schedule.
# Self-hosted Renovate: opens dependency-update PRs on a weekly schedule.
# Config lives in /renovate.json. Requires a repo/org secret RENOVATE_TOKEN
# (a PAT with `repo` + `workflow` scope, or a fine-grained token with
# contents:write + pull-requests:write) so Renovate can push branches and open
@@ -8,7 +8,7 @@ name: Renovate
on:
schedule:
- cron: "0 4 * * *" # every day at 04:00 UTC
- cron: "0 4 * * 1" # every Monday at 04:00 UTC
workflow_dispatch:
inputs:
logLevel:
@@ -28,7 +28,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Run Renovate
uses: renovatebot/github-action@v46.1.20
uses: renovatebot/github-action@v46.1.17
with:
token: ${{ secrets.RENOVATE_TOKEN }}
env:
+1 -1
View File
@@ -1,6 +1,6 @@
services:
traefik:
image: "traefik:v3.7.8"
image: "traefik:v3.7.6"
container_name: "traefik"
restart: unless-stopped
command:
+1 -1
View File
@@ -1,6 +1,6 @@
services:
traefik:
image: "traefik:v3.7.8"
image: "traefik:v3.7.6"
container_name: "traefik"
restart: unless-stopped
command:
+1 -1
View File
@@ -1,6 +1,6 @@
services:
traefik:
image: "traefik:v3.7.8"
image: "traefik:v3.7.6"
container_name: "traefik"
restart: unless-stopped
command:
+2 -2
View File
@@ -1,6 +1,6 @@
services:
cloudflare:
image: "traefik:v3.7.8"
image: "traefik:v3.7.6"
container_name: "cloudflare"
restart: unless-stopped
command:
@@ -19,7 +19,7 @@ services:
- 8080:8080
traefik:
image: "traefik:v3.7.8"
image: "traefik:v3.7.6"
container_name: "traefik"
restart: unless-stopped
command:
+1 -1
View File
@@ -1,6 +1,6 @@
services:
traefik:
image: "traefik:v3.7.8"
image: "traefik:v3.7.6"
container_name: "traefik"
restart: unless-stopped
command:
+1 -1
View File
@@ -1,6 +1,6 @@
services:
traefik:
image: "traefik:v3.7.8"
image: "traefik:v3.7.6"
container_name: "traefik"
restart: unless-stopped
command:
+1 -1
View File
@@ -1,6 +1,6 @@
services:
traefik:
image: "traefik:v3.7.8"
image: "traefik:v3.7.6"
container_name: "traefik"
restart: unless-stopped
command:
+1 -1
View File
@@ -1,5 +1,5 @@
image:
tag: v3.7.8
tag: v3.7.6
logs:
general:
+1 -1
View File
@@ -1,6 +1,6 @@
services:
traefik:
image: "traefik:v3.7.8"
image: "traefik:v3.7.6"
container_name: "traefik"
restart: unless-stopped
command:
+1 -1
View File
@@ -1,6 +1,6 @@
services:
traefik:
image: "traefik:v3.7.8"
image: "traefik:v3.7.6"
container_name: "traefik"
restart: unless-stopped
command:
+1 -1
View File
@@ -1,6 +1,6 @@
services:
traefik:
image: "traefik:v3.7.8"
image: "traefik:v3.7.6"
container_name: "traefik"
restart: unless-stopped
command:
+1 -1
View File
@@ -1,6 +1,6 @@
services:
traefik:
image: "traefik:v3.7.8"
image: "traefik:v3.7.6"
container_name: "traefik"
restart: unless-stopped
command:
+1 -1
View File
@@ -14,7 +14,7 @@
set -euo pipefail
# Pinned to match the Docker suite (tests/e2e/scenarios/*/docker-compose.yml).
TRAEFIK_VERSION="${TRAEFIK_VERSION:-v3.7.8}"
TRAEFIK_VERSION="${TRAEFIK_VERSION:-v3.7.6}"
WEB_PORT="${WEB_PORT:-8000}"
LAPI_PORT="${LAPI_PORT:-8090}"