Menu

#178 One download failure invaildates a whole mirror

open
nobody
None
5
2004-11-02
2004-11-01
Chris Dolan
No

Package manager version: 0.23.1
Distribution version: 0.7.1.rsync

I can't decide if this is a bug or a "Bummer, that
sucks" situation.

While doing an update-all, Fink found that my usual
mirror (distfiles.sfo.ca.us.finkmirrors.net) was
missing a file (imagemagick-6.0.8). The mirror was
flagged as a failure and it went on to the next mirror
and the next, etc, until it finally found the file in
Norway. After a slow download, it went on to the next
file to download (libxml2). But it stuck with the same
slow Norway connection instead of reverting to
California. Eventually, I tired of the slow downloads
and Ctrl-C'd out to rerun. Happily, my fast mirror
returned (as expected).

Looking into the code, it looks like the Fink::Mirror
data structure is cached and the {failed} values are
preserved across file downloads.

Is it a bug or a feature that the CA mirror was flagged
as a failure for the whole session rather than just for
the single download?

A plausible superior behavior (but harder to implement)
would be to allow two download failures before the
whole mirror site is invalidated. This would require
us to keep a separate failure pool: current download
and whole session. I might be willing to write the
patch is this is deemed an improvement.

Discussion

  • Darian Lanx

    Darian Lanx - 2004-11-02
    • labels: 349629 -->
    • milestone: 351564 -->
     
  • Darian Lanx

    Darian Lanx - 2004-11-02

    Logged In: YES
    user_id=613165

    Hello :)

    Since the code does exactly what it should do, I,
    personally, would consider this a feature. Whether it is a
    misfeature or a well thought out feature is left to
    discussion. Personally I agree with you, for the next
    download after a failure , fink should default back to your
    mirror preference, however this can create a lot of trouble.
    Simply assume that your mirror choice has been offline for a
    couple of day (for whatever reaosns) and thus is completely
    out of sync still. This would mean that you get an invalid
    retry for every package you try to download before fink goes
    out and looks for a working mirror. Since I do not see any
    "broken code" I have moved this to "Feature Request". You
    are of _course_ welcoem to submit a patch that remedies the
    current implementation.

     
  • Daniel Macks

    Daniel Macks - 2004-11-02

    Logged In: YES
    user_id=535292

    The "desired behavior" probably depends on what the most
    common mode of failure is. If the usual case is that a whole
    server is unreachable or massively out-of-sync, then should
    decide to skip that server as soon as possible. If the usual
    case is that packages need files before they have had a
    chance to propagate, each server still has "most" files so
    no reason to omit that whole server.

    SF is documented to mirror itself within hours and may be
    shortening that window as soon as their new hardware goes
    live. CPAN mirrors hourly and has daily integrity checks.
    dmalloc probably has better information about fink's own
    mirror pool, both among themselves and making the jump from
    the stated sources into the finkmirrors. Our package
    descriptions are carried over a mirroring system also, so
    the tarball-isn't-propagated-yet window is narrower than
    just the tarball's mirroring.

    OTOH, SF's pool is known to have dead servers from time to
    time (and for long periods of time), finkmirrors are
    volunteer sites who occasionally change configs and break
    our scripts for a day or two, and various of the jillions
    of CPAN and other servers come and go. And it's pretty easy
    to get a no-long-existant server stored as a fink pref even
    when we publish new mirror lists.

    In my experience "dead server" is pretty common.

     
  • Darian Lanx

    Darian Lanx - 2004-11-02

    Logged In: YES
    user_id=613165

    Distfiles used to be mirrored every 24 hours. This time
    frame should be down to about 2 hours by now. Some mirror
    sites might choose to sync every hour, but this all depends
    how often the Master Distfiles mirror goes through the info
    files and collects all the sources that are mentioned within
    them.

    This indeed leaves us with two main situations.

    1.) Sources which _cannot_ be mirroed for licensing reasons
    2.) Servers which are dead, plain broken.

    I think that 2 is not all that common, most of the time the
    user picks a time window where the particular mirror he
    chose _or_ the Master distfiles mirror have eithe rnot
    picked up the file yet or it was not even collected yet.

    You will catch an out of sync mirror, that is sure, mainly
    because we do not require them to update in a fixed time
    intervall. For once that would put massive load on the
    Master as I cannot coordinate when every mirror updates and
    secondly some mirrors are not taken as good care of as I
    would sometimes wish for.

    I hope this clarifies the current mirror situation a bit, we
    could model this "Feature" around these facts.

     
  • Daniel Macks

    Daniel Macks - 2004-11-02

    Logged In: YES
    user_id=535292

    I don't think case #1 exists: fink does not try finkmirrors
    for License:Restrictive packages (if it does, this is indeed
    a bug since common sense and the code itself say this should
    not be occurring:).

     
  • Darian Lanx

    Darian Lanx - 2004-11-02

    Logged In: YES
    user_id=613165

    Just to clarify this:

    #1 _never_ happens. The Master Distfiles mirror checks and
    makes sure that no package with such a restricted license
    gets mirrored out to the slaves. However, if you have set
    your fink to do MasterFirst it will _always_ fail when it
    encounters an info that pulls restricted sources (usually
    for the projects web-site). So maybe we can set a flag (in
    that case) to override MasterFirst and pull the sources
    directly since it will _NOT_ be present on any of the
    finkmirrors anyways.

     

Log in to post a comment.