From: Mike Hommey Date: Thu, 16 Apr 2020 04:24:49 GMT Subject: Order of operations at the end of fast-import? 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