Re: [PATCH] connect: also update offset for features without values

3 messages, 3 authors, 2021-09-26 · open the first message on its own page

Re: [PATCH] connect: also update offset for features without values

From: Junio C Hamano <hidden>
Date: 2021-09-23 21:53:01

Jeff King [off-list ref] 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 ;-)
quoted hunk
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?

Thanks.

Re: [PATCH] connect: also update offset for features without values

From: Jeff King <hidden>
Date: 2021-09-23 22:02:31

On Thu, Sep 23, 2021 at 02:52:53PM -0700, Junio C Hamano wrote:
Jeff King [off-list ref] writes:
quoted
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).
quoted
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.
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
 '
 

Re: [PATCH] connect: also update offset for features without values

From: Andrzej Hunt <hidden>
Date: 2021-09-26 15:16:32


On 24/09/2021 00:02, Jeff King wrote:
On Thu, Sep 23, 2021 at 02:52:53PM -0700, Junio C Hamano wrote:
quoted
Jeff King [off-list ref] writes:
quoted
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).
quoted
quoted
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).
quoted hunk
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
  '
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help