Skip to content

fix(crawl): retry transient connection timeouts during registry sweeps#17

Merged
Ap6pack merged 1 commit into
mainfrom
claude/monitor-network-resilience
Jul 6, 2026
Merged

fix(crawl): retry transient connection timeouts during registry sweeps#17
Ap6pack merged 1 commit into
mainfrom
claude/monitor-network-resilience

Conversation

@Ap6pack

@Ap6pack Ap6pack commented Jul 6, 2026

Copy link
Copy Markdown
Owner

Description

All three Registry Monitor runs died on httpx.ConnectTimeout. Root cause: the ClawHubClient created a fresh AsyncClient per request with no retries, so a single transient connection blip — whether during registry enumeration (list paging) or a per-skill fetch — propagated and aborted the entire crawl. The per-skill guard I added earlier didn't help when the timeout hit list_skills during enumeration.

Fix at the source:

  • ClawHubClient now uses httpx.AsyncHTTPTransport(retries=3), which retries connection-level failures (ConnectError/ConnectTimeout, with backoff) transparently. Retry count is configurable.
  • _enumerate_skills now degrades gracefully on any residual error after retries (not just ClawHubError), so a genuine hard failure stops paging instead of crashing the run.

This is the piece that was actually breaking the live sweeps — the incremental/--full logic from #16 is correct; it just never got to run to completion because enumeration kept timing out.

Type of Change

  • Bug fix

Checklist

  • Tests added (client retry config; enumeration surviving a raw timeout) — 1588 pass, 16 skipped
  • ruff + mypy clean

🤖 Generated with Claude Code

https://claude.ai/code/session_01DNoTXU8k3pfSBzR7aJubqL


Generated by Claude Code

Three registry-monitor runs died on httpx ConnectTimeout — the ClawHub
client created a fresh AsyncClient per request with no retries, so a single
transient connection blip (during enumeration paging or a per-skill fetch)
propagated and aborted the whole crawl.

- ClawHubClient now uses AsyncHTTPTransport(retries=3), which retries
  connection-level failures (ConnectError/ConnectTimeout) with backoff.
  Retry count is configurable.
- _enumerate_skills now degrades gracefully on any residual error (after
  retries) instead of only catching ClawHubError, so a hard failure stops
  paging rather than crashing the run.

Tests: client retry configuration + enumeration surviving a raw timeout.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DNoTXU8k3pfSBzR7aJubqL
@Ap6pack Ap6pack merged commit 5d109b4 into main Jul 6, 2026
5 checks passed
@Ap6pack Ap6pack deleted the claude/monitor-network-resilience branch July 6, 2026 06:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants