macos: safeguard git maintenance against highly concurrent operations
Get series with b4
b4 am [email protected]Versions newest first
- v1 Latest2 patches 2 repliesIn review
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/2 | maintenance: create `launchctl` configuration using a lock filebuiltin/ | +30 | 0 replies | |
| 2/2 | maintenance: skip bootout/bootstrap when plist is registeredbuiltin/ t/ | +62 | 6 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.
Cover letter [PATCH 0/2] macos: safeguard git maintenance against highly concurrent operations
When we started porting Scalar to C, one of the first things we did was to run Scalar's quite extensive set of functional tests. And there, we ran into immediate problems in the macOS job because git maintenance was registering a large number of repositories concurrently, and our code could be more robust in such scenarios.
The culprit lies not with Scalar, of course, but with the way git maintenance wants to write the plist for use by launchctl and register it, every time, and if two concurrent processes try to do that, they stumble over each other.
This pair of patches makes git maintenance much less fragile in those situations.
Please note that this patch series conflicts with lh/systemd-timers, although in a trivial way: the latter changes the signature of launchctl_schedule_plist() to lose its cmd parameter. The resolution is to adjust the conflicting code to lose the cmd parameter, and also drop it from launchctl_list_contains_plist() (and define it in the same way as launchctl_boot_plist() does). I assume that lh/systemd-timers will advance to next pretty soon; I plan on rebasing this patch series on top of it at that stage.
Derrick Stolee (1):
maintenance: skip bootout/bootstrap when plist is registered
Johannes Schindelin (1):
maintenance: create launchctl configuration using a lock file
builtin/gc.c | 91 ++++++++++++++++++++++++++++++++---------- t/t7900-maintenance.sh | 17 ++++++++ 2 files changed, 87 insertions(+), 21 deletions(-)
base-commit: 48bf2fa8bad054d66bd79c6ba903c89c704201f7
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1024%2Fdscho%2Fmaintenance%2Flaunchctl-concurrent-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1024/dscho/maintenance/launchctl-concurrent-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/1024
Signature · 1 line
gitgitgadget