Don't continue on dependency fetch errors #43643
Replies: 3 comments 1 reply
-
|
Hi there, Please help this Discussion progress by creating a minimal reproduction. This means a repository dedicated to reproducing this issue with the minimal dependencies and config possible. Before we start working on your issue we need to know exactly what's causing the current behavior. A minimal reproduction helps us with this. Discussions without reproductions are less likely to be converted to Issues. Please follow these steps:
If you need help with running Renovate on your minimal reproduction repository, please refer to our Running Renovate guide. The Renovate team |
Beta Was this translation helpful? Give feedback.
-
SummarySelf-hosted Renovate runs sometimes time out when fetching Packagist metadata (ETIMEDOUT). When that happens Renovate treats the dependency as unresolved and closes the MR / considers there's no update, then on a subsequent run it recreates the MR. This leads to flapping merge requests and lost MR state (labels, discussion history, etc.). Original report / context: #43643 Screenshot:
Reproduction goal Create a minimal, reliably repeatable repro that demonstrates Renovate closing an existing dependency MR (or not updating it) after a datasource fetch timeout, and then recreating it on a later run. Environment
Minimal repository Create a repository with the following composer.json at the repository root: {
"name": "example/repro",
"require": {
"intervention/image": "^2.5"
}
}Steps to reproduce (network-failure simulation)
{
"extends": ["config:base"],
"enabledManagers": ["composer"],
"automerge": false
}
Option A — Using tc/netem (Linux):
Option B — Using iptables to drop traffic to repo.packagist.org: Option C — Run Renovate with an HTTP proxy that simulates a timeout or closes connections for https://repo.packagist.org/p2/* while allowing other traffic.
What to assert / test checks
Notes / hypotheses
Optional: Node-level mocking for faster CI repro If you want a CI-friendly reproducible test that doesn't require manipulating host networking, create a small integration test that stubs the Packagist datasource call to throw a timeout error for a single run. Example approach:
Logs / references
|
Beta Was this translation helpful? Give feedback.
-
|
[Written by Claude] Adding a corroborating data point from the Mend.io-hosted app (so this isn't limited to self-hosted): same signature, The part that may help triage: the failure is cache-gated, which explains the "sometimes (quite often)" intermittency. I compared two consecutive runs of the same pipeline (full extract +
A dependency only fails when its datasource-cache entry is cold (forcing a live request) and the packagist connection happens to time out at that instant. A failed lookup isn't cached as a durable success, so it re-attempts on the next cold run — effectively a coin-flip on the network. When the cache is warm (Run B), the dep never touches the network and always resolves, regardless of egress health. That's the mechanism behind the flapping PRs described here: a transient One note on the connection itself: my Net ask (same as OP): a transient per-dependency connection error ( |
Beta Was this translation helpful? Give feedback.

Uh oh!
There was an error while loading. Please reload this page.
-
Tell us more.
My self hosted renovate run sometimes (quite often) gets timeouts:
And this results merge request being closed as renovate thinks there's no update involved.
And next time it r uns again, it creates the merge requests.
This creates annoying flapping merge requests that have been re-created. It loses history of existing merge requests, for example ~renovate-stop-updating labels. it shouldn't even touch the existing ones.
Beta Was this translation helpful? Give feedback.
All reactions