diff options
author | Michael Haggerty <mhagger@alum.mit.edu> | 2017-09-08 15:51:50 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-09-09 03:18:04 +0900 |
commit | 6a2a7736d867dac39f2c54833fd0a65107c7cc5b (patch) | |
tree | b69fae752807ff8bed34dfdaf85d4f4126ef1339 /t/t7609-merge-co-error-msgs.sh | |
parent | files_initial_transaction_commit(): use a transaction for packed refs (diff) | |
download | tgif-6a2a7736d867dac39f2c54833fd0a65107c7cc5b.tar.xz |
t1404: demonstrate two problems with reference transactions
Currently, a loose reference is deleted even before locking the
`packed-refs` file, let alone deleting any packed version of the
reference. This leads to two problems, demonstrated by two new tests:
* While a reference is being deleted, other processes might see the
old, packed value of the reference for a moment before the packed
version is deleted. Normally this would be hard to observe, but we
can prolong the window by locking the `packed-refs` file externally
before running `update-ref`, then unlocking it before `update-ref`'s
attempt to acquire the lock times out.
* If the `packed-refs` file is locked so long that `update-ref` fails
to lock it, then the reference can be left permanently in the
incorrect state described in the previous point.
In a moment, both problems will be fixed.
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t7609-merge-co-error-msgs.sh')
0 files changed, 0 insertions, 0 deletions