Files
artifactapi/examples
unkinben 6e5aa578ee
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/test Pipeline was successful
ci/woodpecker/pr/build Pipeline was successful
perf: offload virtual repo merge to thread pool via asyncio.to_thread
The synchronous handler.merge() call blocked the uvicorn event loop for
the entire merge duration (38s for a 19-member helm virtual repo), stalling
all other requests on the same worker during that window.

Wrapping the call in asyncio.to_thread() releases the event loop while the
CPU-bound YAML parse/merge/dump runs in the default thread pool, allowing
health checks and other requests to be served concurrently.

Measured impact (19-member helm-all, single worker):
  Before: first concurrent /health stalled for 37721ms
  After:  all concurrent /health requests served in <65ms

The change is at the generic handler dispatch site, so it applies to all
current and future _VirtualHandler implementations without modification.

Also fix base_url/package keys merged onto a single line in
examples/single-file/remotes.yaml, which prevented docker-compose startup.
2026-05-02 01:30:36 +10:00
..