PR body with ~130 embedded release notes exhausts the heap regardless of --max-old-space-size #45482
Unanswered
smoochy
asked this question in
Request Help
Replies: 2 comments
|
Hi there, |
0 replies
|
There's a couple of Issues I need to raise around this - will try and get them raised today |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
How are you running Renovate?
Self-hosted Renovate CLI
Which platform you running Renovate on?
GitHub.com
Which version of Renovate are you using?
44.46.0 (self-hosted via
npx renovate@44)Please tell us more about your question or problem
A single Docker image pinned more than one major behind produces an update whose changelog spans roughly 130 releases. Renovate fetches all of them and embeds them in one pull request body, and compiling that body exhausts node's heap:
Raising the heap does not reach it. I measured three ceilings; each was honoured by V8, and each run died at the same point after roughly 300 seconds:
--max-old-space-sizeWhere it fails: in body rendering, not in fetching. The changelog fetch completes: the trace log shows the
containous/traefikAPI responses cached and 276Found release notes for ...records written. On a trace-level run the last 200 MB of the ndjson log contain exactly three records, two of themCompiling template, and one single log line is over 50 MB - roughly the size of the object being compiled.Release notes gathered for that one update, by major:
Minimal reproduction: a scratch repository whose only relevant content is
with a config extending
config:recommended.separateMajorMinoris on by default, so this yields a v3 major update whose changelog spans the whole v2.10 -> v3.7 range. Any image pinned comparably far behind should behave the same.Workaround I am using:
fetchChangeLogs: "off"scoped to that one package makes the same run complete normally. It works, but it means the update gets no body content at all rather than a truncated one.The question: is an unbounded number of embedded release notes intended? I would have expected either a cap on how many are embedded, or a fallback to a summary plus a compare link once the collected notes exceed some size - rather than the run failing with an unrecoverable V8 error at whatever ceiling it is given. If a bound is wanted, I am happy to turn this into an issue with whatever extra detail you need.
Logs (if relevant)
Logs
The full trace log is 2.2 GB but I can extract any slice.
All reactions