Order of operations at the end of fast-import?
- From
Mike Hommey <mh@glandium.org>
- Date
- Apr 16, 2020, 04:24 UTC
- Message-ID
- <20200416042449.ztgyrdunsrzt7avp@glandium.org>
Hi,
I just noticed that the order of operations at the end of fast-import are: - end_packfile - dump_branches - dump_tags
The first may create loose objects if the pack is small (per fastimport.unpackLimit, defaulting to 100). The latter two create refs.
There seems to be a theoretical race condition here, if something else triggers a gc at the "wrong" time, the loose objects might be cleaned up and the branches/tags refs become dangling.
I understand that the packfile does need to be finished before creating the refs, and that the unpacking replaces that when there aren't enough objects, but wouldn't it be more data-safe to actually finish the pack, create the refs, and then unpack?
Mike