I realised that this issue wasn't in the issue tracker yet, but only discussed
in private communication. I
put it here so it can be better tracked.
Symptom:
error log is reporting 'could not resolve continent'
The problem is that mod_geoip is too old on Debian and Ubuntu, and it lacks the
functionality to yield
region data from lookups.
Excerpts from communication:
---------
Okay, I almost expected that -- I was already digging in the back of my head,
what I remember about the old
mod_geoip version that Debian has. The problem with it is that at the time the
continent lookup wasn't
implemented. This was actually one of the reasons why I implemented the GeoIP
lookup in mod_mirrorbrain
itself in the beginning. Later, when mod_geoip became more powerful, I switched
to using it for the
purposes.
I probably should have chosen a different route -- I should have put the
country-continent mapping
statically right into mod_mirrorbrain, because then it would have this bit of
information, without being
bound to a newer version of mod_geoip. The "new" version of mod_geoip is already
two years old or so, but
the Debian package is very outdated unfortunately.
I think a fix could be either to implement the country-continent mapping inside
mod_mirrorbrain, or to
package the newer mod_geoip for Debian/Ubuntu and provide it via the openSUSE
build service similar to the
other stuff that's already there. (And we should work with Debian to update the
package; this was in fact
one reason why I considered becoming a real Debian contributor)
I'm not sure right now though whether the continent lookup makes mod_mirrorbrain
fail completely, or if it
is maybe still able to pick mirrors based on country? Do you see it doing random
choices, or does it pick
mirrors by country?
I see it just sets continent_code = "--" when that lookup fails, so if the
country of a client is the same
as the country of a mirror, it should redirect to that. If not, it'll use a
random mirror; yes, that's what
probably happens.
(You could set "MirrorBrainDebug yes" in the Apache config to see a lot of
detail.)
I'm sorry! But with newer mod_geoip (and if that fails, also newer libgeoip)
this can be resolved.
Peter
-------
Good morning,
I debianized my apache2-mod_geoip package now, and a Debian/Ubuntu libapache2-
mod-geoip package will become
available in the repositories later today; that should fix the issue.
The GeoIP library itself is version 1.4.4 which should be new enough.
Peter
-------
Thus, this issue is "solved" by providing the updated mod_geoip by us for
installation through the openSUSE
buildservice for Debian and Ubuntu.
For the record, another possible solution would be to
* add a static country/region table to mod_mirrorbrain so it could do the
(admittedly very simple) lookup
itself
* update the "real" Debian package
|