Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
rework set_first_release + add first script to tests
this change will prevent the race between setting all releases to
first=0 and then setting first=1 based on a query that depends
on previous put to finish on ES level.

it adds a run of MetaCPAN::Script::First to the setup test,
to ensure all releases are indexed correctly ('first'-wise)
before running the other tests.
  • Loading branch information
mickeyn committed May 6, 2016
1 parent 8e55db0 commit e87aca6
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 22 deletions.
29 changes: 11 additions & 18 deletions lib/MetaCPAN/Document/Distribution.pm
Expand Up @@ -37,26 +37,19 @@ sub releases {

sub set_first_release {
my $self = shift;
$self->unset_first_release;
my $release = $self->releases->sort( ["date"] )->first;
return unless $release;
return $release if $release->first;
$release->_set_first(1);
$release->put;
return $release;
}

sub unset_first_release {
my $self = shift;
my $releases
= $self->releases->filter( { term => { first => 'true' }, } )
->size(200)->scroll;
while ( my $release = $releases->next ) {
$release->_set_first(0);
$release->update;
my @releases = $self->releases->sort( ["date"] )->all;

my $first = shift @releases;
$first->_set_first(1);
$first->put;

for my $rel (@releases) {
$rel->_set_first(0);
$rel->put;
}
$self->index->refresh if $releases->total;
return $releases->total;

return $first;
}

__PACKAGE__->meta->make_immutable;
Expand Down
4 changes: 0 additions & 4 deletions lib/MetaCPAN/Script/Release.pm
Expand Up @@ -275,10 +275,6 @@ sub import_archive {
# update 'first' value
$document->set_first;
$document->put;

sleep 2
if defined $ENV{'METACPAN_SERVER_CONFIG_LOCAL_SUFFIX'}
and $ENV{'METACPAN_SERVER_CONFIG_LOCAL_SUFFIX'} eq 'testing';
}

sub _build_backpan_index {
Expand Down
1 change: 1 addition & 0 deletions t/00_setup.t
Expand Up @@ -81,6 +81,7 @@ copy( $src_dir->file('bugs.tsv'), $fakecpan_dir->file('bugs.tsv') );

$server->index_releases;
$server->set_latest;
$server->set_first;
$server->index_authors;
$server->index_cpantesters;

Expand Down
8 changes: 8 additions & 0 deletions t/lib/MetaCPAN/TestServer.pm
Expand Up @@ -6,6 +6,7 @@ use CPAN::Repository::Perms;
use MetaCPAN::Script::Author;
use MetaCPAN::Script::CPANTesters ();
use MetaCPAN::Script::Latest;
use MetaCPAN::Script::First;
use MetaCPAN::Script::Mapping;
use MetaCPAN::Script::Release;
use MetaCPAN::Server ();
Expand Down Expand Up @@ -184,6 +185,13 @@ sub set_latest {
'latest' );
}

sub set_first {
my $self = shift;
local @ARGV = ('first');
ok( MetaCPAN::Script::First->new_with_options( $self->_config )->run,
'first' );
}

sub index_authors {
my $self = shift;

Expand Down

0 comments on commit e87aca6

Please sign in to comment.