diff --git a/lib/MetaCPAN/Script/Latest.pm b/lib/MetaCPAN/Script/Latest.pm index 3e5a120b3..77ba0bd6a 100644 --- a/lib/MetaCPAN/Script/Latest.pm +++ b/lib/MetaCPAN/Script/Latest.pm @@ -88,7 +88,6 @@ sub run { my %upgrade; my %downgrade; - my @modules_to_purge; my %queued_distributions; my $total = @filter; @@ -202,11 +201,9 @@ sub run { ) ); $upgrade{ $file_data->{distribution} } = $file_data; - push @modules_to_purge, @modules; } elsif ( $file_data->{status} eq 'latest' ) { $downgrade{ $file_data->{release} } = $file_data; - push @modules_to_purge, @modules; } } } @@ -217,12 +214,16 @@ sub run { type => 'file' ); + my %to_purge; + while ( my ( $dist, $file_data ) = each %upgrade ) { # Don't reindex if already marked as latest. # This just means that it hasn't changed (query includes 'latest'). next if ( !$self->force and $file_data->{status} eq 'latest' ); + $to_purge{ $file_data->{download_url} } = 1; + $self->reindex( $bulk, $file_data, 'latest' ); } @@ -238,17 +239,16 @@ sub run { && $upgrade{ $file_data->{distribution} }->{release} eq $file_data->{release} ); + $to_purge{ $file_data->{download_url} } = 1; + $self->reindex( $bulk, $file_data, 'cpan' ); } $bulk->flush; $self->index->refresh; - # We just want the CPAN::DistnameInfo - my @module_to_purge_dists = map { $_->distribution } @modules_to_purge; - # Call Fastly to purge - $self->purge_cpan_distnameinfos( \@module_to_purge_dists ); - + $self->purge_cpan_distnameinfos( [ + map CPAN::DistnameInfo->new($_), keys %to_purge ] ); } # Update the status for the release and all the files.