]> git.ipfire.org Git - thirdparty/git.git/commit
t0610: work around flaky test with concurrent writers
authorPatrick Steinhardt <ps@pks.im>
Fri, 4 Oct 2024 15:32:16 +0000 (17:32 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 4 Oct 2024 16:34:47 +0000 (09:34 -0700)
commit7355574a226e15a06c07fdcf1c401cf043298e4b
tree5af7f8334ab2f9f3f8bd04d8dd296cbc02ef2a8c
parent6241ce217046cc77d306bda06ad80ac1973b4932
t0610: work around flaky test with concurrent writers

In 6241ce2170 (refs/reftable: reload locked stack when preparing
transaction, 2024-09-24) we have introduced a new test that exercises
how the reftable backend behaves with many concurrent writers all racing
with each other. This test was introduced after a couple of fixes in
this context that should make concurrent writes behave gracefully. As it
turns out though, Windows systems do not yet handle concurrent writes
properly, as we've got two reports for Cygwin and MinGW failing in this
newly added test.

The root cause of this is how we update the "tables.list" file: when
writing a new stack of tables we first write the data into a lockfile
and then rename that file into place. But Windows forbids us from doing
that rename when the target path is open for reading by another process.
And as the test races both readers and writers with each other we are
quite likely to hit this edge case.

This is not a regression: the logic didn't work before the mentioned
commit, and after the commit it performs well on Linux and macOS, and
the situation on Windows should have at least improved a bit. But the
test shows that we need to put more thought into how to make this work
properly there.

Work around the issue by disabling the test on Windows for now. While at
it, increase the locking timeout to address reported timeouts when using
either the address or memory sanitizer, which also tend to significantly
extend the runtime of this test.

This should be revisited after Git v2.47 is out.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t0610-reftable-basics.sh