Repository navigation
Commit 2ad2906
authored
Warn when a local process execution sandbox cannot be deleted (#23696)
## Problem
`AsyncDropSandbox::drop` deletes a local sandbox by dropping its
`TempDir`, and `tempfile`'s `Drop` ignores any removal error. A sandbox
that contains a read-only directory is therefore left behind in the
temporary directory with no message. #23636 is one case: an extracted Go
module cache leaked about 700 sandboxes and 2.1 GB per cold run, and
nothing reported it. @tdyas asked there for at least a warning.
## Fix
Close the `TempDir` explicitly on the blocking cleanup task and log a
warning with the sandbox path when that fails. Behavior is otherwise
unchanged: cleanup still runs in the background and a failure does not
fail the run.
## Verification
Two unit tests in `local_tests.rs`: a normal sandbox is deleted, and a
sandbox with a read-only subdirectory returns an error that names its
path. End to end, a cold `check` of a Go module on main (without #23636)
now logs the warning for every leaked download sandbox.
Notice: Claude used for code drafting, tests and verification.1 parent 630bac3 commit 2ad2906
3 files changed
Lines changed: 51 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
| 48 | + | |
| 49 | + | |
48 | 50 | | |
49 | 51 | | |
50 | 52 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
25 | | - | |
| 25 | + | |
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| |||
826 | 826 | | |
827 | 827 | | |
828 | 828 | | |
829 | | - | |
| 829 | + | |
| 830 | + | |
| 831 | + | |
| 832 | + | |
| 833 | + | |
830 | 834 | | |
831 | 835 | | |
832 | 836 | | |
833 | 837 | | |
| 838 | + | |
| 839 | + | |
| 840 | + | |
| 841 | + | |
| 842 | + | |
| 843 | + | |
| 844 | + | |
| 845 | + | |
| 846 | + | |
| 847 | + | |
| 848 | + | |
| 849 | + | |
834 | 850 | | |
835 | 851 | | |
836 | 852 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
804 | 804 | | |
805 | 805 | | |
806 | 806 | | |
| 807 | + | |
| 808 | + | |
| 809 | + | |
| 810 | + | |
| 811 | + | |
| 812 | + | |
| 813 | + | |
| 814 | + | |
| 815 | + | |
| 816 | + | |
| 817 | + | |
| 818 | + | |
| 819 | + | |
| 820 | + | |
| 821 | + | |
| 822 | + | |
| 823 | + | |
| 824 | + | |
| 825 | + | |
| 826 | + | |
| 827 | + | |
| 828 | + | |
| 829 | + | |
| 830 | + | |
| 831 | + | |
| 832 | + | |
| 833 | + | |
| 834 | + | |
| 835 | + | |
| 836 | + | |
| 837 | + | |
0 commit comments