fix(ci): restore sweep integration test against hardened core (cli-client 4.0.3 + rate-limit)#122
Conversation
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 7. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@v4...v7) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
The sweep integration test (and thus all Backend-tests CI) has been red on every PR since ~2026-05-19; the last green run was #111 (2026-05-16). The break is not in this repo — ether/etherpad#7773 ("harden: reject USER_CHANGES inserts without an author attribute", merged 2026-05-16 17:23, just after the last green run) tightened server-side changeset validation and bumped its own etherpad-cli-client dependency to 4.0.3 to comply. This repo was still pinned to etherpad-cli-client 4.0.2, whose append() splices at text.length (stranding the trailing '\n') with an empty apool and no author attribute — exactly the two shapes #7773 now rejects as badChangeset. Result: zero ACCEPT_COMMITs, so every step's latency sample count is 0 and the test asserts `count > 0`. Two-part fix, both verified against a local core build at develop HEAD: - Bump etherpad-cli-client 4.0.2 -> 4.0.3 (sends author-attributed inserts and preserves the trailing newline). - Raise commitRateLimiting on the SUT in the sweep step. The sweep drives 2..4 authors from a single IP; core's default 10 changes/s/IP rate-limits the 4-author step (~20/s), and a rate-limited USER_CHANGES never gets an ACCEPT_COMMIT, stalling the cli-client's in-flight slot. Mirrors the importExportRateLimiting bump runnerLoadTest.sh already applies. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Qodo reviews are paused for this user.Troubleshooting steps vary by plan Learn more → On a Teams plan? Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center? |
PR Summary by Qodofix(ci): restore sweep integration test on hardened Etherpad core Description
Diagram
High-Level Assessment
Files changed (7)
|
Code Review by Qodo
1.
|
Action Qodo review: use the comma-preserving "points":[^,]* substitution (matching scaling-dive.yml / cpu-profile.yml) so the edit can't strip a trailing comma or JSONC comment and produce invalid settings.json. Add a grep assertion so a non-matching template fails the step loudly instead of silently booting core with the default 10/s limiter. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Thanks @qodo — actioned in 7e4208f. Switched to the comma-preserving |
Qodo reviews are paused for this user.Troubleshooting steps vary by plan Learn more → On a Teams plan? Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center? |
Thanks — that looks like a solid fix.
No further concerns from me. |
Problem
Backend-tests CI has been red on every PR since ~2026-05-19; the last green run was #111 on 2026-05-16. The
Run sweep integration teststep fails with:This surfaced while looking at #121 (the
actions/checkout4→7 bump) — that bump is fine; its checkout steps pass. The red check is an unrelated, pre-existing, repo-wide failure.Root cause (not in this repo)
ether/etherpad#7773— "harden: reject USER_CHANGES inserts without an author attribute" — merged 2026-05-16 17:23, immediately after the last green run. It tightened server-side changeset validation (reject inserts with noauthorattribute; reject changesets that strand the trailing\n) and bumped its ownetherpad-cli-clientdependency to4.0.3to comply.This repo was still pinned to
etherpad-cli-client4.0.2, whoseappend()splices attext.length(after the trailing\n) with an empty apool and no author attribute — exactly the two shapes #7773 now rejects asbadChangeset. Result: zeroACCEPT_COMMITs, so every sweep step recordslatencyMs.count === 0and the test fails.Fix (two parts, both verified against a local core build at develop HEAD)
etherpad-cli-client4.0.2 → 4.0.3 — sends author-attributed inserts and preserves the trailing newline.commitRateLimitingon the SUT in the sweep step. The sweep drives 2..4 authors from a single IP; core's default 10 changes/s/IP rate-limits the 4-author step (~20/s), and a rate-limitedUSER_CHANGESnever gets anACCEPT_COMMIT, stalling the 4.0.3 client's in-flight slot →count=0,errors=4. Mirrors theimportExportRateLimitingbumprunnerLoadTest.shalready applies.Verification
Built
ether/etherpadat develop HEAD (includes #7773) and ran the sweep against it:pnpm test:integrationpasses end-to-end with both changes;pnpm test(48 tests) green.Follow-up (separate)
etherpad-cli-client4.0.3 permanently stalls its in-flight slot when aUSER_CHANGESis rate-limited (noACCEPT_COMMITever clears it). Out of scope here, but worth hardening in that client.🤖 Generated with Claude Code