Fall back to direct cache write if tempfile creation on the same fs fails#2369
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #2369 +/- ##
==========================================
+ Coverage 73.58% 74.32% +0.73%
==========================================
Files 70 70
Lines 38220 39471 +1251
==========================================
+ Hits 28125 29337 +1212
- Misses 10095 10134 +39 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
would it be possible to add a test to make sure we don't regress in the future? |
|
@sylvestre |
|
Rebased on I am not entirely sure if the use of |
|
could you please add high level tests in https://github.com/mozilla/sccache/blob/main/tests/system.rs too ? thanks like Line 1825 in 7025295 |
|
@sylvestre Sorry for the delayed response. I am planning to test this by adding two functions that are similar to One of them should test
|
|
On a second thought, I have a question: I think I named the PR a bit too narrow. Maybe like
I was think of reframing the PR this way, because this way, we don't have to hardcode
|
|
@AJIOB I have pushed the change. Sorry for the delay. |
|
There is an issue with the tests: we use the same |
|
CI should work now. I have relaxed one more error handling: in the case that same-fs file creation fails, we also allow |
|
Hi @myzhang1029 , I face with that error Do you have some plans to actualize the PR? |
|
Hello @AJIOB Is my understanding correct that this patch would fix that error you mentioned? Lots has happened in the repo and let me work on this today! |
|
I hope it helps. In the trace mode I have: |
|
P.S. Just an easy-to-reproduce test on the latest sccache 0.14.0: |
|
Hi @myzhang1029 , Do you have any updates? |
|
Sorry for the delay as my area was hit by some severe weather. This time is largely just rebasing the code and resolving conflicts, but this version should already fix the |
|
Hi @sylvestre, Is this PR OK to you? |
eac34f9 to
1116960
Compare
|
Moved the unit tests to Edit: The integration tests have been merged back. |
|
Just gonna rebase onto |
|
Hi @drahnr , Is it OK for you? |
Signed-off-by: Zhang Maiyun <me@maiyun.me>
Fixes mozilla#2288 The new logic tries to write to a temp file and atomically move it as before, but if a temp file cannot be created, it falls back to writing directly to the final location. In the latter case, we also ignore errors from `set_file_mode`. Signed-off-by: Zhang Maiyun <me@maiyun.me>
In addition, when `/dev/fd/{fd}` doesn't actually exist (e.g. FreeBSD
without `fdescfs`), skip the test to extract to `/dev/fd/{fd}`.
Signed-off-by: Zhang Maiyun <me@maiyun.me>
|
another rebase onto main, mainly for checking compatibility with #2581 |
a8f7502 to
bf045fa
Compare
|
I got my hands on a windows machine and it turned out I simplified the NUL mess. Now fixed. |
|
@drahnr The testsuites seem to work on my FreeBSD VM. Could you please have a look? Thanks! |
|
@drahnr @sylvestre Hi Both, How do you feel about merging this patch? |
….0) (#36) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [mozilla/sccache](https://github.com/mozilla/sccache) | minor | `0.15.0` → `0.16.0` | --- ### Release Notes <details> <summary>mozilla/sccache (mozilla/sccache)</summary> ### [`v0.16.0`](https://github.com/mozilla/sccache/releases/tag/v0.16.0) [Compare Source](mozilla/sccache@v0.15.0...v0.16.0) ##### sccache 0.16.0 ##### Summary sccache 0.16.0 is a smaller, stabilizing release on top of 0.15.0's multi-tier caching work, with a few new capabilities: - **Read-only backends**: Any storage backend can now be marked read-only, not just a select few ([#​2705](mozilla/sccache#2705)). - **Remote execution on aarch64**: Distributed/remote execution now works on Linux aarch64, including fixes for `ldd` output parsing and toolchain packaging on non-x86\_64 Linux ([#​2668](mozilla/sccache#2668)). - **CUDA**: `nvcc`'s `--dependency-output` argument is now handled ([#​2708](mozilla/sccache#2708)). - **Resilience**: Fall back to a direct cache write when tempfile creation on the same filesystem fails ([#​2369](mozilla/sccache#2369)), and give a meaningful error when a multi-level chain references a backend that wasn't compiled in ([#​2695](mozilla/sccache#2695)). - **Client efficiency**: The client and dist-client now use a single-threaded tokio runtime, avoiding a thread explosion when many short-lived clients run on many-core hosts ([#​2704](mozilla/sccache#2704)). - **Correctness**: Strip `SCCACHE_BASEDIRS` from escaped-backslash paths on Windows ([#​2736](mozilla/sccache#2736)), ignore empty-set environment values in config ([#​2639](mozilla/sccache#2639)), and avoid the sccache wrapper when resolving the real compiler ([#​2720](mozilla/sccache#2720)). - **Security/logging**: JWT keys and cert digests are now base64-encoded in logs ([#​2712](mozilla/sccache#2712)), plus general logging improvements ([#​2734](mozilla/sccache#2734)). Welcome to 4 new contributors! ##### Features - feat: all backends support making them as read-only by [@​AJIOB](https://github.com/AJIOB) in [#​2705](mozilla/sccache#2705) - Enable RE on Linux-aarch64 by [@​malfet](https://github.com/malfet) in [#​2668](mozilla/sccache#2668) - feat(nvcc): support argument: `--dependency-output` by [@​ZRHann](https://github.com/ZRHann) in [#​2708](mozilla/sccache#2708) - feat: avoid sccache wrapper when resolving compiler by [@​iTrooz](https://github.com/iTrooz) in [#​2720](mozilla/sccache#2720) - Fall back to direct cache write if tempfile creation on the same fs fails by [@​myzhang1029](https://github.com/myzhang1029) in [#​2369](mozilla/sccache#2369) - Don't wait depfiles for gcc/clang preprocessed inputs by [@​AJIOB](https://github.com/AJIOB) in [#​2665](mozilla/sccache#2665) ##### Fixes - fix: strip SCCACHE\_BASEDIRS from escaped-backslash paths on Windows by [@​rconde01](https://github.com/rconde01) in [#​2736](mozilla/sccache#2736) - fix: ignore empty-set environment values for config by [@​AJIOB](https://github.com/AJIOB) in [#​2639](mozilla/sccache#2639) - fix: handle disabled cache backend features in multilevel chain by [@​cryptomilk](https://github.com/cryptomilk) in [#​2695](mozilla/sccache#2695) - fix: use single-threaded tokio runtime in sccache (dist-)client by [@​AJIOB](https://github.com/AJIOB) in [#​2704](mozilla/sccache#2704) - fix: add newline when printing dist-status to stdout by [@​iTrooz](https://github.com/iTrooz) in [#​2710](mozilla/sccache#2710) ##### Logging - chore: encode jwt key and cert digest with base64 in logs by [@​iTrooz](https://github.com/iTrooz) in [#​2712](mozilla/sccache#2712) - Slightly improve logging by [@​glandium](https://github.com/glandium) in [#​2734](mozilla/sccache#2734) ##### Cleanup - chore: make clippy happy by [@​AJIOB](https://github.com/AJIOB) in [#​2727](mozilla/sccache#2727) - Extract new\_client\_runtime() helper to DRY up client runtime creation by [@​sylvestre](https://github.com/sylvestre) in [#​2744](mozilla/sccache#2744) ##### New Contributors - [@​ZRHann](https://github.com/ZRHann) made their first contribution in [#​2708](mozilla/sccache#2708) - [@​myzhang1029](https://github.com/myzhang1029) made their first contribution in [#​2369](mozilla/sccache#2369) - [@​malfet](https://github.com/malfet) made their first contribution in [#​2668](mozilla/sccache#2668) - [@​rconde01](https://github.com/rconde01) made their first contribution in [#​2736](mozilla/sccache#2736) **Full Changelog**: <mozilla/sccache@v0.15.0...v0.16.0> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9naXRodWItcmVsZWFzZSIsInR5cGUvbWlub3IiXX0=--> Reviewed-on: https://codeberg.org/towonel/towonel/pulls/36
Please see #2288 for the discussion.