Commit 41cdeed
fix(blacksmith-cache): disable auto-gc during fetch and clone to prevent unmount race (#23)
git fetch and clone are porcelain commands that trigger gc --auto internally
after completing. Since gc.autoDetach defaults to true, this spawns a background
daemon holding cwd and mmap'd pack files on the mirror mount, blocking the
subsequent umount with EBUSY even though our explicit runMirrorGC() uses
gc.autoDetach=false.
Disable auto-gc during fetch/clone with gc.auto=0 to eliminate the race. This
makes runMirrorGC() the single place gc runs, with proper timeout and error
handling. Fixes unmount failures in post-checkout cleanup (BLA-3202).
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>1 parent fb9e5da commit 41cdeed
2 files changed
Lines changed: 20 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
294 | 294 | | |
295 | 295 | | |
296 | 296 | | |
| 297 | + | |
297 | 298 | | |
298 | 299 | | |
299 | 300 | | |
| 301 | + | |
| 302 | + | |
300 | 303 | | |
301 | 304 | | |
302 | 305 | | |
| |||
333 | 336 | | |
334 | 337 | | |
335 | 338 | | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
336 | 344 | | |
337 | 345 | | |
338 | 346 | | |
| 347 | + | |
| 348 | + | |
339 | 349 | | |
340 | 350 | | |
341 | 351 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
322 | 322 | | |
323 | 323 | | |
324 | 324 | | |
| 325 | + | |
325 | 326 | | |
326 | 327 | | |
327 | 328 | | |
| 329 | + | |
| 330 | + | |
328 | 331 | | |
329 | 332 | | |
330 | 333 | | |
| |||
372 | 375 | | |
373 | 376 | | |
374 | 377 | | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
375 | 383 | | |
376 | 384 | | |
377 | 385 | | |
| 386 | + | |
| 387 | + | |
378 | 388 | | |
379 | 389 | | |
380 | 390 | | |
| |||
0 commit comments