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