Yes it is a blocker. here is the overview of the problem.
Pulls are over an unreliable HTTP proxy, and there is nothing that can
be done except to retry. When the proxy fails due to high demand, the
resulting repo is not complete, and there is no option to resume or
recover from such an error. Incomplete repo happens also during large
updates, resulting in missing patch files. The only recourse is to
delete the entire repo and try over again, waiting and hoping for the
entire download to complete without error. SSH is not available at all,
neither is any other protocol. The network is basically locked down to
an overloaded proxy, which is why it fails. HTTP over this unreliable
proxy is the only option.
Here is what I propose.
Three things IMHO should be present.
Firstly, a retry option, that takes a positive integer... Zero should
mean try forever. This would make life a lot easier to start off with,
and is the easiest to implement I would think. 99% of the problems would
be solved with just this option.
Secondly, it is a good idea to have an adjustable delay between retries
and between gets, as this too would be very helpful, especially when
dealing with an overloaded proxy.
Finally, there appears to be no sort of transaction journal, at least
from what I have seen. A journal to allow darcs to resume from some
point when something goes very wrong would be an excellent idea,
providing an ACID-like robustness (Please see
http://en.wikipedia.or/wiki/ACID for a terse description if you are not
familiar with the term). While this would be a little more difficult to
do, it could solve piles of problems, especially when testing a full
repo consistency.
|