From: Andrzej Hunt Date: Sun, 26 Sep 2021 15:16:22 GMT Subject: Re: [PATCH] connect: also update offset for features without values Message-ID: In-Reply-To: On 24/09/2021 00:02, Jeff King wrote: > On Thu, Sep 23, 2021 at 02:52:53PM -0700, Junio C Hamano wrote: > >> Jeff King writes: >> >>> I think the problem is that our fake upload-pack exits immediately, so >>> ls-remote gets SIGPIPE. In a v0 conversation, ls-remote expects to say >>> "0000" to indicate that it's not interested in fetching anything (in v2, >>> it doesn't bother, since fetching would be a separate request that it >>> just declines to make). >> >> Ah, Makes sense---the usual SIGPIPE problem ;-) > > Yes, though it definitely took some head-scratching for me to see where > it was. ;) > > Doing: "./t5704-* --stress" made it pretty clear. It fails almost > immediately, and mentions SIGPIPE (well, exit code 141, but by now I > have that one memorized). > >>> This seems to fix it: >>> >>> diff --git a/t/t5704-protocol-violations.sh b/t/t5704-protocol-violations.sh >>> index 34538cebf0..0983c2b507 100755 >>> --- a/t/t5704-protocol-violations.sh >>> +++ b/t/t5704-protocol-violations.sh >>> @@ -40,7 +40,7 @@ test_expect_success 'bogus symref in v0 capabilities' ' >>> test-tool pkt-line pack-raw-stdin && >>> printf "0000" >>> } >input && >>> - git ls-remote --upload-pack="cat input ;:" . >actual && >>> + git ls-remote --upload-pack="cat input; read junk;:" . >actual && >>> printf "%s\tHEAD\n" "$oid" >expect && >>> test_cmp expect actual >>> ' >> >> Yup. In the original thread there was some further back-and-forth >> about further improving the test, if I recall correctly; has the >> issue been settled there, or is everybody happy with the above >> version? > > I think the change I showed earlier (to use ls-remote --symref) is worth > doing. There was lots of discussion about how to format a tab, but in > the end I don't think it really matters. > > So here's that patch again, with this race fix on top, which could be > squashed in, and then I hope we can call it good. Thanks again for doing the actual work - I'll send out a V2 with your changes squashed in, along with an attempt at improving the commit message (as discussed in reply to Taylor's comments). > > diff --git a/t/t5704-protocol-violations.sh b/t/t5704-protocol-violations.sh > index 34538cebf0..bc393d7c31 100755 > --- a/t/t5704-protocol-violations.sh > +++ b/t/t5704-protocol-violations.sh > @@ -35,13 +35,15 @@ test_expect_success 'extra delim packet in v2 fetch args' ' > test_expect_success 'bogus symref in v0 capabilities' ' > test_commit foo && > oid=$(git rev-parse HEAD) && > + dst=refs/heads/foo && > { > - printf "%s HEAD\0symref object-format=%s\n" "$oid" "$GIT_DEFAULT_HASH" | > + printf "%s HEAD\0symref object-format=%s symref=HEAD:%s\n" \ > + "$oid" "$GIT_DEFAULT_HASH" "$dst" | > test-tool pkt-line pack-raw-stdin && > printf "0000" > } >input && > - git ls-remote --upload-pack="cat input ;:" . >actual && > - printf "%s\tHEAD\n" "$oid" >expect && > + git ls-remote --symref --upload-pack="cat input; read junk;:" . >actual && > + printf "ref: %s\tHEAD\n%s\tHEAD\n" "$dst" "$oid" >expect && > test_cmp expect actual > ' > >