Re: git push --mirror hung indefinitely

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2025-03-29 at 14:07:17, Akash S wrote:
> We compared the GIT_TRACE_PACKET=1 output of successful and
> unsuccessful pushes and noticed that the "git flush message 0000" is
> not being received from the Azure DevOps Server during unsuccessful
> push. 
> 
> -------------------------------------------------------------------------------------------------------------------------------------------------------
> 
> Successful git push:
> 11:29:09.032050 pkt-line.c:85           packet:          git< ok refs/tags/v3.9.1
> 11:29:09.034601 http.c:878              == Info: TLSv1.3 (IN), TLS app data, [no content] (0):
> 11:29:09.034630 pkt-line.c:85           packet:     sideband< \10000
> 11:29:09.034643 http.c:878              == Info: TLSv1.3 (IN), TLS app data, [no content] (0):
> 11:29:09.034664 pkt-line.c:85           packet:     sideband< 0000
> 11:29:09.034664 pkt-line.c:85           packet:          git< 0000
> 11:29:09.034699 pkt-line.c:85           packet:          git> 0000
> 11:29:09.035667 http.c:878              == Info: TLSv1.3 (IN), TLS app data, [no content] (0):
> 11:29:09.035701 http.c:878              == Info: Connection #0 to host dev.azure.com left intact
> To https://dev.azure.com/ORGNAME/PRJNAME/_git/REPONAME
> 
> -------------------------------------------------------------------------------------------------------------------------------------------------------
> 
> Unsuccessful git push:
> 11:33:58.759005 pkt-line.c:85           packet:     sideband< \10018ok refs/tags/v3.1.7
> 11:33:58.759035 pkt-line.c:85           packet:          git< ok refs/tags/v3.1.7
> 11:33:58.760165 http.c:878              == Info: TLSv1.3 (IN), TLS app data, [no content] (0):
> 11:33:58.760197 http.c:878              == Info: Connection #0 to host dev.azure.com left intact
> (process hung here)
> 
> -------------------------------------------------------------------------------------------------------------------------------------------------------
> 
> We noticed that "git push mirror" ultimately spawns "git send-pack"
> with options "--stdin" and "--stateless-rpc" and from the git
> send-pack documentation we confirmed that the line must end with a
> flush packet which is ultimately not happening in the hung cases.
> pstack of send-pack process also shows it is waiting on reading
> packets as you mentioned earlier.

`--stateless-rpc` is used for HTTPS, so that's expected.

> Can you please confirm if the hung issue is due to the missing message or packet from the Azure DevOps Server?

We don't have a full trace output here, so it's hard to say completely
for certain, but from what I know of the protocol off the top of my
head, a flush packet is always required at the end of the section of
message.  So I would say that it's very likely that's the cause here.

Note that it could be that you're _also_ missing one or more `ok`
responses from the ref updates you're doing here, and that it's hanging
_before_ it would normally send the flush packet.  That might point to a
different cause on the server side, but the effect would be the same.

If you're talking to the Azure DevOps people, I'd provide them a full
trace output of both working and non-working pushes so that they can
inspect it themselves, which will help them figure out where it might be
going wrong.
-- 
brian m. carlson (they/them)
Toronto, Ontario, CA

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux