mirror of https://github.com/sbt/sbt.git
Fixes #6886. dependencyTree, dependencyBrowseTree, and inspect tree re-explore the same node once per incoming edge. In a DAG with N levels and M children per node the rendered output is O(M^N) -- the OP needed >16 GB heap, #7360 has a 6 GB heap dump, and Friendseeker's analysis on the issue showed the exponential re-traversal directly. Fix: track a visited set across the renderer's recursion. The first time a node is encountered it is rendered in full; on subsequent visits the entry collapses to a one-line +- <id> (*) (ASCII) or a <id> (*) leaf (JSON), matching Maven's dependency:tree (*) convention. Cycle detection (separate parents set, (cycle) marker) is unchanged. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| src | ||
| NOTICE | ||