[PATCH v2 0/2] t7900: fix flaky "maintenance.strategy" test
From: Patrick Steinhardt <hidden>
Date: 2026-08-12 10:11:59
Hi, I've recently noticed that t7900 is flaky, see for example [1]. The root cause of the flake is the auto-detaching logic of git-maintenance(1), which sometimes causes us to skip maintenance altogether when the foreground process is racing with background maintenance. Changes in v2: - Perform some word smithing on commit messages. - Link to v1: https://patch.msgid.link/20260807-pks-t7900-fix-flaky-test-v1-0-08d0ea0fbbc5@pks.im Thanks! Patrick [1]: https://gitlab.com/gitlab-org/git/-/jobs/15762975482 --- Patrick Steinhardt (2): t7900: adapt some tests to use a throwaway repository t7900: fix flaky "maintenance.strategy" test t/t7900-maintenance.sh | 76 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 46 insertions(+), 30 deletions(-) Range-diff versus v1: 1: 10521f07ad ! 1: 1f3f8aa538 t7900: adapt some tests to use a throwaway repository @@ Commit message tests more neatly self-contained and allows us to trivially modify the environment in the next commit. + Note that we adapt calls to `test_config ()` to use git-config(1) + instead. This is because on the one hand we don't need the auto-revert + logic of `test_config ()` as we're using a throwaway repository anyway. + On the other hand it's not possible to use `test_config ()` as it uses + `test_when_finished ()`, which errors out when we run it in a subshell. + Signed-off-by: Patrick Steinhardt [off-list ref] ## t/t7900-maintenance.sh ## 2: 71cb84a4a7 ! 2: ba1fbb27f9 t7900: fix flaky "maintenance.strategy" test @@ Commit message But there's a second condition that may cause us to not execute tasks, namely when the "maintenance.lock" file exists due to a concurrently - running tasks. We usually disable auto-maintenance from detaching in our - test suite to avoid exactly these kinds of race conditions, but in t7900 + running git-maintenance(1) process. We usually disable auto-maintenance + from detaching in our test suite to avoid exactly these kinds of race + conditions by exporting `GIT_TEST_MAINT_AUTO_DETACH=false`. But in t7900 we unset "GIT_TEST_MAINT_AUTO_DETACH" and thus enable the auto-detach logic. The intent of this is to exercise git-maintenance(1) closer to how it would run in a real-world scenario, but it does cause us to race --- base-commit: 2c78326f810173a4f3aefd8021f1e07575412481 change-id: 20260807-pks-t7900-fix-flaky-test-160abfcef65a