Re: [PATCH v3] fetch: commit references fetched before backfilling tags
flat view
From: Karthik Nayak <hidden>
Date: 2026-10-21 10:01:18
Patrick Steinhardt [off-list ref] writes:
On Tue, Oct 20, 2026 at 06:05:22PM -0500, Justin Tobler wrote:quoted
On 26/10/15 11:24PM, Karthik Nayak wrote:[snip]quoted
quoted
Fix this by committing the previous batched update and initiating a new one for backfilling tags. Use a separate error variable for tracking the reference updates: One, it ensures that errors from the regular ref updates don't cause a total failure. Two, if starting the transaction for backfilling tags fails, only those updates are not made to disk. The initial error is now printed straight away to clear the buffer for further errors.Naively, I think it would be nice if it were possible supplement the backfill fetch "haves" with the non-committed references in the pending transaction directly. That would avoid having to commit the references in the middle and probably also fix it for atomic fetches too, but I'm uncertain if that would be a simple or reasonable thing to do.Hmm, I think that's a sensible idea. We should know about the ref updates we have already scheduled into the transaction, so in theory we could use their new object IDs in the negotiation. If that's possible it would definitely be a much better fix.quoted
Committing the intermediate state here does in part fix the issue, so it may be a good first step regardless.Well, if the above suggestions works we'd want to revert this step here, so we'd first have to go back a step again. If the above is infeasible then that's fine. But if it is feasible without too much effort I'd go for it directly. Patrick
I'm a bit wary of going down ad we'd be exposing un-committed references which could fail as 'haves' to the server. This doesn't seem to be conceptually correct as we now expect GC to not clear the objects needed by relying on the .keep lock instead of durable references. But seems like we have negotiation_include_tips in the transport structure which seems like the right fit?
Attachments
- signature.asc [application/pgp-signature] 690 bytes