perf(pm): route installs through scheduler#3072
Conversation
There was a problem hiding this comment.
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.
| } 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())); | ||
| } |
There was a problem hiding this comment.
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()));
}26200e4 to
98fcb0e
Compare
c0f60ef to
4cd0dd1
Compare
📊 pm-bench-phases ·
|
| 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.
Summary
Review Focus