[issue3268] Clone to remote repository does not finish/hangs
bugs at mercurial.selenic.com
Tue Feb 14 09:35:38 CST 2012
New submission from Michal Bukovjan <michal.bukovjan at ge.com>:
There is a problem cloning to remote repository from a local one.
Source: Windows, running hg 1.9.3, same problem occurs with 2.0.2
Target: Linux (RHEL5), running hg 1.9.3 over ssh, we use mercurial-server
When attempting to clone local repository on Windows to a remote Linux box
(source is local, target is a ssh://repo), the process sometimes hangs and
we have to use Ctrl+C for the process to finish.
When digging into the problem, we found out that there is a problem with
the communication between local and remote repos. There is a plugin hook on
the server that checks for changelog signatures in new repos and writes out
if a signature is good or bad (one line of output from each changeset,
using ui.write() method).
If there are enough changesets, the clone (I believe it is in fact push
operation) stalls. After Ctrl+C, the process finishes as interrupted and
the remote messages are written to the console at once, cut off at exactly
4096 bytes boundary.
We made sure there is a ui.flush() after the plugin writes out each line,
but the problem persists.
If the messages from the server do not exceed 4096 bytes (altogether, not
just messages from plugins), the clone operation works fine. If it is
longer, the clone process stalls forever and has to be interrupted by
Our theory is that there is a missing flush somewhere either when writing
on server side, or writing on local side that triggers once the server
(remote) output exceeds 4096 bytes.
title: Clone to remote repository does not finish/hangs
Mercurial issue tracker <bugs at mercurial.selenic.com>
More information about the Mercurial-devel