Skip to content

Commit 3113c50

Browse files
authored
ci(rate-limit): wait for etherpad readiness before running test (#7726)
* ci(rate-limit): wait for etherpad to be ready before running the test The workflow starts the etherpad container in the background, then runs `pnpm install`, then runs the test. On a warm pnpm-store the install can finish before etherpad is listening on 9001, at which point nginx returns 502 for the test request and the run fails. Recent README-only commits on develop hit this race on three consecutive runs. Poll the nginx-proxied endpoint (port 8081 — also what the test uses) until it stops returning 5xx, with a 2-minute timeout and `docker logs etherpad-docker` on giving up to make diagnosis straightforward. * ci(rate-limit): address Qodo review (nginx logs, tighter timeout) - Name the nginx container so its logs can be captured when the readiness poll times out — previously nginx was started anonymously and a 502 caused by nginx itself (rather than etherpad) would have been hard to diagnose from the workflow log alone. - On timeout also dump `docker ps -a` for container-state visibility. - Tighten the readiness wait: 30 iterations × (1s curl timeout + 1s sleep) gives ~60s budget instead of ~240s, which is still well above observed cold-start time and keeps the failure-fast contract.
1 parent 8b14eb6 commit 3113c50

1 file changed

Lines changed: 26 additions & 1 deletion

File tree

.github/workflows/rate-limit.yml

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,36 @@ jobs:
5858
name: run docker images
5959
run: |
6060
docker run --name etherpad-docker -p 9000:9001 --rm --network ep_net --ip 172.23.42.2 -e 'TRUST_PROXY=true' epl-debian-slim &
61-
docker run -p 8081:80 --rm --network ep_net --ip 172.23.42.1 -d nginx-latest
61+
docker run --name nginx-docker -p 8081:80 --rm --network ep_net --ip 172.23.42.1 -d nginx-latest
6262
docker run --rm --network ep_net --ip 172.23.42.3 --name anotherip -dt anotherip
6363
-
6464
name: install dependencies and create symlink for ep_etherpad-lite
6565
run: pnpm install --frozen-lockfile
66+
-
67+
# The etherpad container is started in the background above; without
68+
# this wait the test step can hit nginx before etherpad is listening
69+
# and nginx returns 502, failing the run on a cold cache. Poll the
70+
# nginx-proxied endpoint (which is also what the test hits) until it
71+
# stops returning 5xx.
72+
name: Wait for etherpad behind nginx to be ready
73+
run: |
74+
# ~60s budget: 30 iterations × (1s curl timeout + 1s sleep).
75+
# Cold-start of the etherpad container is well under that.
76+
for i in $(seq 1 30); do
77+
if curl -fsS -o /dev/null --max-time 1 http://127.0.0.1:8081/; then
78+
echo "etherpad is ready behind nginx"
79+
exit 0
80+
fi
81+
sleep 1
82+
done
83+
echo "ERROR: etherpad behind nginx did not become ready in time"
84+
echo "--- docker ps ---"
85+
docker ps -a || true
86+
echo "--- nginx-docker logs ---"
87+
docker logs nginx-docker || true
88+
echo "--- etherpad-docker logs ---"
89+
docker logs etherpad-docker || true
90+
exit 1
6691
-
6792
name: run rate limit test
6893
run: |

0 commit comments

Comments
 (0)