Skip to content

fix: add timeout to registry URL validation to prevent CLI hang#2040

Open
md-amer wants to merge 2 commits intoasyncapi:masterfrom
md-amer:fix/registry-url-timeout
Open

fix: add timeout to registry URL validation to prevent CLI hang#2040
md-amer wants to merge 2 commits intoasyncapi:masterfrom
md-amer:fix/registry-url-timeout

Conversation

@md-amer
Copy link

@md-amer md-amer commented Mar 16, 2026

Summary

Fixes #2027

The CLI hangs indefinitely when --registry-url points to an unreachable host (e.g., http://10.255.255.1) because registryValidation() calls fetch() with no timeout or AbortController.

Changes

  • Added AbortController with a 5-second timeout to the fetch call in registryValidation()
  • Switched from GET to HEAD for a lighter validation request (we only need to check reachability, not download the response body)
  • Added a clear timeout-specific error message: Registry URL timed out after 5s: <url>
  • Cleanup: clearTimeout in a finally block to prevent timer leaks

Before

$ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --registry-url http://10.255.255.1
# CLI hangs forever

After

$ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --registry-url http://10.255.255.1
# Error: Registry URL timed out after 5s: http://10.255.255.1
# (exits cleanly in ~5 seconds)

Test plan

  • Added unit tests for registryURLParser() — validates URL format handling
  • Added unit tests for registryValidation() — confirms timeout behavior with unreachable host
  • All 7 new tests passing
  • All existing unit tests unaffected

🤖 Generated with Claude Code

Resolves asyncapi#2027. The CLI previously hung indefinitely when --registry-url
pointed to an unreachable host due to no timeout on the fetch call.

Changes:
- Add AbortController with 5s timeout to registryValidation()
- Switch from GET to HEAD for lighter validation requests
- Provide clear timeout-specific error message
- Add unit tests for registry URL parsing and validation
Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Welcome to AsyncAPI. Thanks a lot for creating your first pull request. Please check out our contributors guide useful for opening a pull request.
Keep in mind there are also other channels you can use to interact with AsyncAPI community. For more details check out this issue.

@changeset-bot
Copy link

changeset-bot bot commented Mar 16, 2026

🦋 Changeset detected

Latest commit: 8cdcf33

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@asyncapi/cli Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@sonarqubecloud
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: To Triage

Development

Successfully merging this pull request may close these issues.

[BUG] CLI hangs indefinitely when --registry-url points to an unreachable host (no timeout handling)

1 participant