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

stacklok / toolhive / 22619272664 / 1
66%
main: 66%

Build:
DEFAULT BRANCH: main
Ran 03 Mar 2026 10:49AM UTC
Files 527
Run time 13s
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 Mar 2026 10:40AM UTC coverage: 63.222% (+0.02%) from 63.2%
22619272664.1

push

github

web-flow
Release proxy mutex before draining connections in Stop() (#3970)

Stop() held p.mutex for the entire duration of server.Shutdown(),
which blocks until all active connections close. IsRunning() acquires
the same mutex, so the runner's monitoring goroutine could not detect
that the proxy had stopped.

Fix by releasing the mutex before calling server.Shutdown(). The
shutdown signal (closing shutdownCh) and state updates (stopped flag,
server nil-out) happen under the lock; only the slow drain runs
unlocked. IsRunning() no longer needs the mutex since it only does a
channel select, which is goroutine-safe by design.

Also add a 30-second shutdown timeout with force-close fallback, and
set IdleTimeout on the HTTP server to prevent idle keep-alive
connections from blocking Shutdown() indefinitely.

Fixes #3969

Signed-off-by: Greg Katz <gkatz@indeed.com>

45483 of 71942 relevant lines covered (63.22%)

74.61 hits per line

Source Files on job 22619272664.1
  • Tree
  • List 527
  • Changed 7
  • Source Changed 1
  • Coverage Changed 7
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 22619272664
  • 9240b9d3 on github
  • Prev Job for on main (#22612385118.1)
  • Next Job for on main (#22619626791.1)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc