• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stacklok / toolhive / 33742410618
70%

Build:
DEFAULT BRANCH: main
Ran 03 Sep 2026 10:13AM UTC
Jobs 1
Files 905
Run time 3min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

03 Sep 2026 10:05AM UTC coverage: 69.856% (+0.01%) from 69.843%
33742410618

push

github

web-flow
Persist resolved CIMD clients so Redis session rehydration finds them (#6284)

* fix: persist resolved CIMD clients for session rehydration

Redis session rehydration resolves the session's client through the bare
RedisStorage row lookup, never through the CIMD storage decorator, so a
CIMD client that was resolved dynamically at authorize time was not found
at the token endpoint and every exchange failed with a bare
invalid_grant.

Persist the resolved client into the underlying storage on every
successful document fetch (best-effort write-through), marked DCR-issued
so the row carries the same anti-bloat TTL as DCR registrations.
Rehydration then finds the persisted snapshot without a document
re-fetch, so established sessions also survive pod restarts and document
rotation. The rehydration client lookup now also logs the client id and
the wrapped error, which previously left no server-side trace.

Closes #6187

Signed-off-by: Aleksandr Filippov <71711753+alex-feel@users.noreply.github.com>

* fix: address review feedback on CIMD client persistence

Add a rate.Limiter to /oauth/authorize, gating only requests whose
client_id is a CIMD URL, mirroring the existing /oauth/register limiter.
The gate fires before fosite's NewAuthorizeRequest so a flood of distinct
CIMD client_id values cannot mint persisted rows faster than the limit.
DCR (non-URL) client_id values are never gated.

Wrap storage with a new shape-guard decorator whenever CIMD is disabled,
so GetClient refuses any URL-shaped client_id outright instead of
resolving a stale row a prior CIMD-enabled period may have persisted.
Document the resulting lifecycle on Config.CIMDEnabled: a persisted row
outlives the flag being turned off, and re-enabling it before the row's
TTL expires makes that snapshot resolvable again without a fresh fetch.

Correct the RegisterClient doc comment to describe the real upsert
semantics both backends implement, since the write-through path now
depends on re-registra... (continued)

41 of 45 new or added lines in 5 files covered. (91.11%)

3 existing lines in 2 files now uncovered.

77257 of 110595 relevant lines covered (69.86%)

91.66 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
94.38
-0.65% pkg/authserver/storage/cimd_decorator.go
2
83.21
-0.15% pkg/authserver/storage/redis.go

Coverage Regressions

Lines Coverage ∆ File
2
59.42
-0.21% pkg/workloads/manager.go
1
96.77
-3.23% pkg/foreach/foreach.go
Jobs
ID Job ID Ran Files Coverage
1 33742410618.1 03 Sep 2026 10:13AM UTC 905
69.86
GitHub Action Run
Source Files on build 33742410618
  • Tree
  • List 905
  • Changed 10
  • Source Changed 6
  • Coverage Changed 10
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #33742410618
  • 4fd27ef7 on github
  • Prev Build on main (#33640666112)
  • Next Build on main (#33743847677)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc