GitHub
10/01/2026, 1:52 PMMeltanoError, so any other failure to fetch or read the definition fails the command. And each check looks up the login, which renews an expired session through Auth0, so an unreachable Auth0 holds up every plugin for up to 30 seconds. This has been true since 4.4.0 (#10360).
No Hub request had a timeout, so any command that fetches from the Hub, such as meltano add, could also wait without a limit. Every Hub request now times out. The update check only advises, so it now ignores any failure to fetch or read the definition, not only MeltanoError.
• MeltanoHubService._get sends every request with REQUEST_TIMEOUT_SECONDS (10 seconds for each attempt).
• PluginLockService.has_update catches Exception around the Hub fetch and logs it at debug level, as the PyPI version check does.
• PluginLockService.checks_updates is a cached_property, so a command looks up the login once.
• The meltano plugin list reference says that a check that fails reports no update and does not stop the command.
• The update check tests also cover failures other than MeltanoError, such as a page that is not JSON, JSON in the wrong shape, and a cache file that cannot be read, and check that the login is looked up once. They fail without the change.
Against a server that accepts the connection but never answers, a Hub request now fails after 40 seconds (four attempts with the session retries), where before it waited without a limit.
Behaviour changes
• While Meltano Cloud is unreachable, a plugin invocation waits up to about 40 seconds, then runs without the update hint.
• With an expired login that Auth0 cannot renew, a command waits up to 30 seconds once, not once for each plugin.
• Against a Hub that does not answer, meltano add, meltano lock, meltano hub list and meltano hub ping fail after about 40 seconds with "Could not connect to Meltano Hub", where before they waited without a limit.
Checklist
• I have read the contribution guide
Was generative AI tooling used to co-author this PR?
• Yes (please specify the tool below)
Generated-by: Claude Code following the agentic coding guidelines
Related Issues
• None
---
🤖 Generated with Claude Code
Summary by Sourcery
Make Hub and plugin update checks fail safely and within bounded time so commands can continue when remote services are unavailable.
Bug Fixes:
• Prevent plugin update checks from blocking or failing plugin commands when Meltano Cloud is unreachable or returns invalid data.
• Add timeouts to all Meltano Hub requests so unresponsive requests fail instead of hanging indefinitely.
Enhancements:
• Cache the update-check eligibility lookup so authentication is evaluated once per command rather than once per plugin.
Documentation:
• Document that failed plugin update checks report no update and do not stop commands.
Tests:
• Expand plugin update-check coverage to include malformed responses, invalid definitions, unreadable cache files, and single authentication lookup behavior.
meltano/meltanoGitHub
10/01/2026, 6:11 PM