Skip to content

perf(pm): route installs through scheduler#3072

Draft
elrrrrrrr wants to merge 2 commits into
perf/pm-review-installer-scheduler-statefrom
perf/pm-review-installer-wiring-cleanup
Draft

perf(pm): route installs through scheduler#3072
elrrrrrrr wants to merge 2 commits into
perf/pm-review-installer-scheduler-statefrom
perf/pm-review-installer-wiring-cleanup

Conversation

@elrrrrrrr
Copy link
Copy Markdown
Contributor

Summary

  • Wire fresh/stale install paths through InstallScheduler.
  • Remove obsolete install pipeline module.

Review Focus

  • Optional dependency behavior, shutdown semantics, and removal of old pipeline paths.

@elrrrrrrr elrrrrrrr added A-Pkg Manager Area: Package Manager benchmark Run pm-bench on PR labels May 25, 2026
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request replaces the legacy pipeline-based installer with a centralized InstallScheduler architecture. The new system manages download and clone deduplication, implements prefetching via an InstallEventReceiver, and explicitly handles parent-child clone dependencies. Several global caches and the pipeline module have been removed in favor of this scheduler-managed state. Feedback was provided to improve error diagnosability by propagating the specific failure reason from parent packages to their dependent children during the clone process.

Comment on lines +558 to +562
} else if let Some(children) = self.blocked_by_parent.remove(&target) {
let error = format!("parent package {} failed to clone", target.display());
for child in children {
self.complete_clone(child.target, Err(error.clone()));
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

When a parent package fails to clone, the error message propagated to its children currently only identifies the parent path. Including the actual error that caused the parent to fail would significantly improve diagnosability when reviewing logs for failed installs.

        } else if let Some(children) = self.blocked_by_parent.remove(&target) {
            let parent_err = result.unwrap_err();
            let error = format!("parent package {} failed to clone: {}", target.display(), parent_err);
            for child in children {
                self.complete_clone(child.target, Err(error.clone()));
            }

@elrrrrrrr elrrrrrrr force-pushed the perf/pm-review-installer-scheduler-state branch from 26200e4 to 98fcb0e Compare May 25, 2026 09:51
@elrrrrrrr elrrrrrrr force-pushed the perf/pm-review-installer-wiring-cleanup branch from c0f60ef to 4cd0dd1 Compare May 25, 2026 10:09
@github-actions
Copy link
Copy Markdown

📊 pm-bench-phases · 59bbf22 · linux (ubuntu-latest)

Workflow run — ant-design

PMs: utoo (this branch) · utoo-npm (latest published) · bun (latest)

npmjs.org

p0_full_cold

PM wall ±σ user sys RSS pgMinor
bun 9.41s 0.17s 10.57s 10.44s 726M 347.1K
utoo-next 8.46s 0.67s 10.63s 12.44s 989M 126.4K
utoo-npm 8.38s 0.23s 10.79s 12.49s 993M 132.9K
utoo 8.46s 0.48s 10.57s 12.46s 1008M 122.0K
PM vCtx iCtx netRX netTX cache node_mod lock
bun 14.9K 18.4K 1.22G 6M 1.91G 1.79G 1M
utoo-next 117.9K 80.7K 1.19G 5M 1.77G 1.77G 2M
utoo-npm 118.9K 83.3K 1.19G 5M 1.77G 1.77G 2M
utoo 118.0K 73.7K 1.19G 5M 1.77G 1.76G 2M

p1_resolve

PM wall ±σ user sys RSS pgMinor
bun 1.87s 0.04s 4.03s 1.08s 526M 176.3K
utoo-next 4.59s 3.06s 5.37s 1.70s 617M 90.8K
utoo-npm 3.04s 0.14s 5.53s 2.06s 618M 82.1K
utoo 2.85s 0.05s 5.30s 1.74s 614M 81.1K
PM vCtx iCtx netRX netTX cache node_mod lock
bun 7.8K 4.7K 205M 3M 109M - 1M
utoo-next 46.8K 69.2K 202M 2M 7M 3M 2M
utoo-npm 71.2K 91.7K 203M 2M 7M 3M 2M
utoo 46.5K 71.1K 202M 2M 7M 3M 2M

p3_cold_install

PM wall ±σ user sys RSS pgMinor
bun 6.81s 0.10s 6.38s 10.04s 625M 209.4K
utoo-next 5.93s 0.19s 5.01s 10.96s 448M 63.4K
utoo-npm 6.00s 0.46s 5.12s 10.90s 477M 60.1K
utoo 5.75s 0.20s 5.00s 10.90s 484M 59.4K
PM vCtx iCtx netRX netTX cache node_mod lock
bun 4.7K 6.7K 1.02G 3M 1.82G 1.82G 1M
utoo-next 94.7K 46.5K 1017M 2M 1.76G 1.76G 2M
utoo-npm 95.5K 46.6K 1018M 2M 1.76G 1.76G 2M
utoo 87.0K 55.2K 1018M 3M 1.76G 1.76G 2M

p4_warm_link

PM wall ±σ user sys RSS pgMinor
bun 3.33s 0.05s 0.21s 2.35s 135M 32.9K
utoo-next 2.28s 0.13s 0.49s 3.91s 81M 18.7K
utoo-npm 2.32s 0.09s 0.49s 3.88s 80M 19.0K
utoo 2.15s 0.08s 0.44s 3.59s 53M 11.2K
PM vCtx iCtx netRX netTX cache node_mod lock
bun 282 24 5M 34K 1.98G 1.79G 1M
utoo-next 44.2K 19.5K 20K 24K 1.76G 1.76G 3M
utoo-npm 42.7K 19.2K 20K 7K 1.76G 1.76G 3M
utoo 22.3K 14.2K 20K 9K 1.77G 1.76G 3M

npmmirror.com: no output captured.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-Pkg Manager Area: Package Manager benchmark Run pm-bench on PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant