Commit bb5edf2
committed
Parallelize catalog hydration to cut boot time
Boot's `hydrateCatalogs` used to walk preset → extension → bundle
serially, and each hydrator walked its 2–3 source URLs serially inside
`hydrateFromCatalogSources`. That's ~8 GitHub GETs strictly serial on a
cold cache, plus 3 sequential `specify <kind> list` shell-outs, for
what is entirely disjoint state.
Two changes:
* Run `hydratePresetsForSources` / `hydrateExtensionsForSources` /
`hydrateBundlesForSources` via `Promise.all` — they touch
independent cache slices.
* Inside `hydrateFromCatalogSources`, `Promise.all` the per-source
`fetchCatalogJson` calls before folding into the items array.
Order of items is preserved because we still iterate the resolved
array in source order.
All 211 tests pass.1 parent 0a62ac8 commit bb5edf2
2 files changed
Lines changed: 31 additions & 15 deletions
Lines changed: 20 additions & 10 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
85 | 85 | | |
86 | 86 | | |
87 | 87 | | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
88 | 103 | | |
89 | | - | |
90 | | - | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
96 | 109 | | |
97 | 110 | | |
98 | 111 | | |
| |||
123 | 136 | | |
124 | 137 | | |
125 | 138 | | |
126 | | - | |
127 | | - | |
128 | | - | |
129 | 139 | | |
130 | 140 | | |
131 | 141 | | |
| |||
Lines changed: 11 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
103 | 103 | | |
104 | 104 | | |
105 | 105 | | |
106 | | - | |
| 106 | + | |
107 | 107 | | |
108 | 108 | | |
109 | 109 | | |
| |||
241 | 241 | | |
242 | 242 | | |
243 | 243 | | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
244 | 249 | | |
245 | 250 | | |
246 | 251 | | |
| |||
269 | 274 | | |
270 | 275 | | |
271 | 276 | | |
272 | | - | |
| 277 | + | |
273 | 278 | | |
274 | 279 | | |
275 | 280 | | |
| |||
291 | 296 | | |
292 | 297 | | |
293 | 298 | | |
294 | | - | |
| 299 | + | |
295 | 300 | | |
296 | 301 | | |
297 | 302 | | |
| |||
313 | 318 | | |
314 | 319 | | |
315 | 320 | | |
316 | | - | |
| 321 | + | |
317 | 322 | | |
| 323 | + | |
318 | 324 | | |
319 | 325 | | |
320 | 326 | | |
| |||
343 | 349 | | |
344 | 350 | | |
345 | 351 | | |
346 | | - | |
| 352 | + | |
347 | 353 | | |
348 | 354 | | |
349 | 355 | | |
| |||
0 commit comments