mirror of
https://relay.ngit.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp.git
synced 2026-10-06 07:28:23 +00:00
The readiness fix incb7e5ae0deliberately withholds receive-pack's terminal flush until process_newly_available_git_data has promoted events, copied any required objects, aligned owner repositories, and notified subscribers. Complex multi-owner finalization can itself exceed ngit's 15-second per-recv I/O timeout even though the server is still making healthy progress. This is distinct from the large-pack failure behindf4828c63: that timeout occurred inside git-receive-pack while Git resolved deltas and checked connectivity. Streaming Git stdout continues to cover that phase. This change covers the post-Git GRASP finalization phase introduced by the corrected completion boundary. When the client negotiated side-band-64k and a terminal flush is being held, send a valid band-2 progress pkt-line every five seconds. Stop and join the keepalive task before releasing the flush so no progress can race past the protocol boundary. Do not invent packets for non-sideband clients. The regression blocks purgatory promotion past the keepalive interval and proves progress arrives while the announcement is unavailable, then verifies the promoted event is queryable before the final flush. Unit coverage pins the pkt-line framing and band identifier. Depends-on:cb7e5ae0f9Original-streaming-fix:f4828c6393Timeout-issue: 497c8ae1554037142e366f9ba363ba898fc16e90198fded195b9a45adb6f38c7