Skip to content

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

Open
md-amer wants to merge 1 commit 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 1 commit 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

⚠️ No Changeset found

Latest commit: 5039ca2

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a 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