[issue3268] Clone to remote repository does not finish/hangs

Michal Bukovjan 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.

Short version: 

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.

messages: 19084
nosy: mbukovjan
priority: bug
status: unread
title: Clone to remote repository does not finish/hangs

Mercurial issue tracker <bugs at mercurial.selenic.com>

More information about the Mercurial-devel mailing list