[PATCH 0/2] object-file: fix packfile flush during transaction commit
- From
Justin Tobler <jltobler@gmail.com>
- Date
- Sep 13, 2026, 20:26 UTC
- Message-ID
- <cover.1789328612.git.jltobler@gmail.com>
Greetings,
This short series fixes a bug I found related to committing an ODB transaction that contains both a loose object and "large" blob when also configured to batch fsync loose objects. The issue can be reproduced with the following:
git init git config core.fsync loose-object git config core.fsyncMethod batch git config core.bigFileThreshold 5 echo foo >1-foo && echo foobar >2-foobar git add 1-foo 2-foobar
and produces the following error:
error: unable to write file .git/objects/pack/pack-2b7c2470289822070687e8d64186093a710eaed3.pack: No such file or directory fatal: unable to rename temporary file to '.git/objects/pack/pack-2b7c2470289822070687e8d64186093a710eaed3.pack'
If a "large" blob packfile is written to the transaction temporary directory, it is unable to be flushed during transaction commit because the underlying transaction is migrated to the main ODB before the packfile is finalized. To avoid this, this series ensures any pending packfile in the transaction is flushed first.
Thanks, -Justin
Justin Tobler (2): object-file: lift ODB reprepare out of packfile flush object-file: flush transaction packfile before migrating objects
object-file.c | 12 ++++++++---- t/t1050-large.sh | 16 ++++++++++++++++ 2 files changed, 24 insertions(+), 4 deletions(-)
base-commit: 47ce80527c56f462cb97db4ca8125342204d3783
-- 2.55.0