summaryrefslogtreecommitdiff
path: root/RelNotes
diff options
context:
space:
mode:
authorLibravatar Jeff King <peff@peff.net>2021-11-19 15:58:55 -0500
committerLibravatar Junio C Hamano <gitster@pobox.com>2021-11-19 14:22:16 -0800
commit2a4aed42ecf6ee4ba8824423bd40010c3572aa0c (patch)
tree898eab2866d297764375b976ac6cc9b53b059c83 /RelNotes
parentMerge branch 'vd/pthread-setspecific-g11-fix' into maint (diff)
downloadtgif-2a4aed42ecf6ee4ba8824423bd40010c3572aa0c.tar.xz
fetch-pack: ignore SIGPIPE when writing to index-pack
When fetching, we send the incoming pack to index-pack (or unpack-objects) via the sideband demuxer. If index-pack hits an error (e.g., because an object fails fsck), then it will die immediately. This may cause us to get SIGPIPE on the fetch, as we're still trying to write pack contents from the sideband demuxer (which is typically a thread, and thus takes down the whole fetch process). You can see this in action with: ./t5702-protocol-v2.sh --stress --run=59 which ends with (wrapped for readability): test_must_fail: died by signal 13: git -c protocol.version=2 \ -c transfer.fsckobjects=1 -c fetch.uriprotocols=http,https \ clone http://127.0.0.1:5708/smart/http_parent http_child not ok 59 - packfile-uri with transfer.fsckobjects fails on bad object This is mostly cosmetic. The actual error of interest (in this case, the object that failed the fsck check) comes from index-pack straight to stderr, so the user still sees it. They _might_ even see fetch-pack complaining about index-pack failing, because the main thread is racing with the sideband-demuxer. But they'll definitely see the signal death in the exit code, which is what the test is complaining about. We can make this more predictable by just ignoring SIGPIPE. The sideband demuxer uses write_or_die(), so it will notice and stop (gracefully, because we hook die_routine() to exit just the thread). And during this section we're not writing anywhere else where we'd be concerned about SIGPIPE preventing us from wasting effort writing to nowhere. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'RelNotes')
0 files changed, 0 insertions, 0 deletions