-
Notifications
You must be signed in to change notification settings - Fork 602
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
'git fetch' sporadically hangs #747
Comments
Could you please provide more information like source file and line, config settings, error results, error logs, etc? I have an issue where a fetch operation stalls and the client reports & then hangs. Using TortoiseGit & git for windows 2.14.1.windows.1 as the client and Bonobo 5.1.1 or 6.5.0 with built-in git 1.9.5 or latest git (2.22.0.windows.1) as the server the error reported by the client is:
After this point client hangs. |
Man, i've been battling this for the last week or so! I ended up putting some logging into the bonobo source and running my compiled dll to try to log where its happeneing etc. I also thought to make the calls asynchronous, but I just had to get this issue resolved. I just ran into it again tonight. I could still clone, and after cloning again fetch is working again, but for how long? I ended up cloning the bare repo on the server filesystem using --mirror, doing some pruning and pushed to a new repo also created with --mirror, and updating the refs so all origin become local. Then deleted the origin remote and copying the new repo back where the old repo was. This fixed it for most of our devs, except me tonight! If you are interested in updating to asynchronous, its in the file |
Issue was Bonobo was sending a bunch of data to git via stdIn then then that completed it would read result on stdOut. If data on stdIn caused lots of data to be generated on stdOut then buffer in git would fill and block the process till someone (Bonobo) read stdOut (or maybe a git bug corrupts something when buffer fills?). This never happens because Bonobo would wait till all of stdIn was sent. |
When running 'git fetch' on repositories with a large number of refs, the git client will sometimes stall. On the server, idle git-upload-pack.exe processes remain. Once this happens, this is always reproducible the same local checkout. When fetching from a different source, the problem disappears.
This bug is due to a deadlock that happens when the StandardOutput and StandardInput buffers of the external git-upload-pack process fill. It can be solved by making the read operation on the process output asynchronous.
The text was updated successfully, but these errors were encountered: