Subject: | db won't reindex the current version if it's older than a previous (removed) version |
CPAN::SQLite won't reindex a lesser version of a dist even if the
greater version is removed (from the CPAN).
I believe this happens with the call to vcmp in
CPAN::SQLite::State::state() (~ line 241).
The problem is that my cpan db indexed a dist,
and then the author removed that dist and replaced it with numerically
lesser versions.
The version comparison makes sense (only index the latest version), but
is it necessary? Wouldn't 02packages.details.gz have the "current"
version? Or was this done in case one mirror returned an older pacakges
file than a previous index?
My specific example:
I asked cpan to install Dist::Zilla::Plugin::ScpDeploy
and it tried to download a version but wound down into a 404 loop and
eventually gave up.
There was no particular indication of the problem, it took me a long
time to track down why it was trying to download a version that didn't
exist on the CPAN.
The version that was in my cpandb.sql was 20110610.2306, however
chromatic has since changed his versioning scheme and removed that
original version, so now the latest version on the cpan is 1.20110709.
However, doing 'reload index' in the cpan shell didn't fix it. Doing
'cpandb --reindex Dist-Zilla-Plugin-ScpDeploy' didn't fix it. I had to
open cpandb.sql manually with sqlite3 and delete the record out of the
table.