Commit fd3543d
committed
fix(queue-runner): don't parse buildproducts.path as a StorePath
`buildproducts.path` is a full filesystem path, not a bare store path:
Hydra's `$out/nix-support/hydra-build-products` lets a product point at
a sub-path of an output (e.g. `doc manual $doc/share/doc/nix/manual
index.html`), so the column legitimately contains a trailing `/...`
after the `<hash>-<name>`.
`OwnedBuildProduct::parse_paths` fed the whole string to
`StoreDir::parse`, which died with `invalid store path / symbol at 50`
on any such value. That wedged every cached-build fast path touching a
product with a subpath — notably the `nix-manual-2.31.4/share/doc/nix/manual`
products from `roots.nix` builds, leaving ~200 builds per eval stuck
as 'unfinished' even though every output was already in the store.
Even had the parse succeeded, `BuildProduct::from_db` was hard-coding
`relative_path: \"\".into()`, so the sibling constructors
(`from_grpc`, `from_shared`) and `from_db` disagreed on what the field
meant.
Fix by:
- dropping the `StorePath` generic + `parse_paths` from
`OwnedBuildProduct` (path stays as `Option<String>` — it's opaque
to the db crate), and
- routing `BuildProduct::from_db` through the same
`RelativeStorePath::from_path` splitter `from_grpc`/`from_shared`
already use. The db-side write path calls `RelativeStorePath::print`,
so `from_path` is now its exact inverse.
Adds unit tests covering the subpath product, a bare store path, and
the print/from_path round-trip.1 parent e8b7bd8 commit fd3543d
4 files changed
Lines changed: 84 additions & 37 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
261 | 261 | | |
262 | 262 | | |
263 | 263 | | |
264 | | - | |
265 | | - | |
266 | | - | |
267 | | - | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
268 | 267 | | |
269 | 268 | | |
270 | 269 | | |
| |||
279 | 278 | | |
280 | 279 | | |
281 | 280 | | |
282 | | - | |
283 | | - | |
284 | | - | |
285 | | - | |
| 281 | + | |
286 | 282 | | |
287 | 283 | | |
288 | 284 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
221 | 221 | | |
222 | 222 | | |
223 | 223 | | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
224 | 229 | | |
225 | | - | |
| 230 | + | |
226 | 231 | | |
227 | 232 | | |
228 | 233 | | |
229 | 234 | | |
230 | | - | |
| 235 | + | |
231 | 236 | | |
232 | 237 | | |
233 | 238 | | |
234 | 239 | | |
235 | | - | |
236 | | - | |
237 | | - | |
238 | | - | |
239 | | - | |
240 | | - | |
241 | | - | |
242 | | - | |
243 | | - | |
244 | | - | |
245 | | - | |
246 | | - | |
247 | | - | |
248 | | - | |
249 | | - | |
250 | | - | |
251 | | - | |
252 | 240 | | |
253 | 241 | | |
254 | 242 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
388 | 388 | | |
389 | 389 | | |
390 | 390 | | |
391 | | - | |
392 | | - | |
393 | | - | |
394 | | - | |
395 | | - | |
396 | | - | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
397 | 400 | | |
398 | 401 | | |
399 | 402 | | |
| |||
402 | 405 | | |
403 | 406 | | |
404 | 407 | | |
405 | | - | |
| 408 | + | |
406 | 409 | | |
407 | 410 | | |
408 | 411 | | |
| |||
739 | 742 | | |
740 | 743 | | |
741 | 744 | | |
| 745 | + | |
| 746 | + | |
| 747 | + | |
| 748 | + | |
| 749 | + | |
| 750 | + | |
| 751 | + | |
| 752 | + | |
| 753 | + | |
| 754 | + | |
| 755 | + | |
| 756 | + | |
| 757 | + | |
| 758 | + | |
| 759 | + | |
| 760 | + | |
| 761 | + | |
| 762 | + | |
| 763 | + | |
| 764 | + | |
| 765 | + | |
| 766 | + | |
| 767 | + | |
| 768 | + | |
| 769 | + | |
| 770 | + | |
| 771 | + | |
| 772 | + | |
| 773 | + | |
| 774 | + | |
| 775 | + | |
| 776 | + | |
| 777 | + | |
| 778 | + | |
| 779 | + | |
| 780 | + | |
| 781 | + | |
| 782 | + | |
| 783 | + | |
| 784 | + | |
| 785 | + | |
| 786 | + | |
| 787 | + | |
| 788 | + | |
| 789 | + | |
| 790 | + | |
| 791 | + | |
| 792 | + | |
| 793 | + | |
| 794 | + | |
| 795 | + | |
| 796 | + | |
| 797 | + | |
| 798 | + | |
| 799 | + | |
| 800 | + | |
| 801 | + | |
| 802 | + | |
| 803 | + | |
| 804 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2057 | 2057 | | |
2058 | 2058 | | |
2059 | 2059 | | |
2060 | | - | |
| 2060 | + | |
2061 | 2061 | | |
2062 | 2062 | | |
2063 | | - | |
2064 | | - | |
| 2063 | + | |
| 2064 | + | |
2065 | 2065 | | |
2066 | 2066 | | |
2067 | 2067 | | |
| |||
0 commit comments