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

stacklok / toolhive / 35070099263
71%

Build:
DEFAULT BRANCH: main
Ran 16 Sep 2026 07:53AM UTC
Jobs 1
Files 923
Run time 2min
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

16 Sep 2026 07:44AM UTC coverage: 70.702% (+0.02%) from 70.685%
35070099263

push

github

web-flow
feat(vmcp): stop session init stalling on backends that never service the notification stream (#6633)

* feat(vmcp): make the backend session-init timeout configurable

WithBackendInitTimeout existed but nothing outside tests called it, so
session init was pinned to the 30s default. operational.timeouts only
ever raised it. Add operational.timeouts.backendInit and wire it, and
make an explicitly configured value authoritative so a longer workload
request timeout no longer extends it.

A backend that stalls the handshake instead of answering or failing now
has a bound short enough to lose the race against a client's own connect
timeout, which partialFailureMode: best_effort turns into a usable
session.

Default behaviour is unchanged when backendInit is unset.

(cherry picked from commit 7862764c3)

* test(vmcp): cover the session factory option wiring

Serve is too big to unit test, so the two lines wiring backendInit went
uncovered. Pull the option building into sessionFactoryOptions and test
its branches directly. No behaviour change.

(cherry picked from commit 02f0a0361)

* feat(vmcp): let backends opt out of list_changed propagation

Subscribing to a backend's list_changed notifications opens a standalone
notification stream during session initialization. A backend that accepts
the subscribe and then never services it stalls the handshake until the
init deadline, and clients with their own connect timeout give up first.

The connector already treats a nil sink as "do not subscribe" and its
comment says the stream must stay opt-in because some backends hang on
it, but the server supplies a sink for every session, so in production
that gate was unreachable.

Add operational.listChanged, and a WithListChangedFilter factory option
in the per-workload resolver shape the factory already uses, so a single
misbehaving backend can be excluded while the rest keep live
propagation. An excluded ba... (continued)

51 of 75 new or added lines in 3 files covered. (68.0%)

829 existing lines in 10 files now uncovered.

81662 of 115501 relevant lines covered (70.7%)

97.52 hits per line

Uncovered Changes

Lines Coverage ∆ File
21
37.02
-1.5% pkg/vmcp/config/zz_generated.deepcopy.go
3
38.06
5.11% pkg/vmcp/cli/serve.go

Coverage Regressions

Lines Coverage ∆ File
335
44.17
-0.13% cmd/thv-operator/api/v1beta1/zz_generated.deepcopy.go
316
67.09
0.06% cmd/thv-operator/controllers/virtualmcpserver_controller.go
83
81.47
0.69% cmd/thv-operator/api/v1beta1/mcpexternalauthconfig_types.go
32
91.57
0.0% pkg/authserver/config.go
30
92.44
0.18% pkg/authserver/upstream/oauth2.go
17
85.11
0.05% pkg/authserver/runner/embeddedauthserver.go
11
90.97
0.02% cmd/thv-operator/pkg/controllerutil/authserver.go
3
82.77
-0.23% pkg/authserver/storage/redis.go
1
96.77
-3.23% pkg/foreach/foreach.go
1
94.49
-0.79% pkg/vmcp/composer/dag_executor.go
Jobs
ID Job ID Ran Files Coverage
1 35070099263.1 16 Sep 2026 07:53AM UTC 923
70.7
GitHub Action Run
Source Files on build 35070099263
  • Tree
  • List 923
  • Changed 21
  • Source Changed 13
  • Coverage Changed 20
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #35070099263
  • 40554a55 on github
  • Prev Build on main (#34976529838)
  • Next Build on main (#35072086285)
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