Skip to content

Commit 025a6ff

Browse files
authored
Merge pull request #892 from metacpan/oalders/latest-queue-delay
Take several (delayed) passes at setting the "latest" flag
2 parents 0ecc5c2 + 93d6bba commit 025a6ff

File tree

3 files changed

+34
-8
lines changed

3 files changed

+34
-8
lines changed

lib/MetaCPAN/Script/Latest.pm

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,11 @@ sub _queue_latest {
4747
my $dist = shift || $self->distribution;
4848

4949
log_info { "queueing " . $dist };
50-
$self->_add_to_queue( index_latest =>
51-
[ ( $self->force ? '--force' : () ), '--distribution', $dist ] );
50+
$self->_add_to_queue(
51+
index_latest =>
52+
[ ( $self->force ? '--force' : () ), '--distribution', $dist ],
53+
{ attempts => 3 }
54+
);
5255
}
5356

5457
sub run {

lib/MetaCPAN/Script/Queue.pm

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,18 @@ sub run {
3232

3333
my $next = $rule->iter( $self->dir );
3434
while ( defined( my $file = $next->() ) ) {
35-
$self->_add_to_queue( index_release => [$file] );
35+
$self->_add_to_queue(
36+
index_release => [$file],
37+
{ attempts => 3 }
38+
);
3639
}
3740
}
3841

3942
if ( $self->_has_file ) {
40-
$self->_add_to_queue( index_release => [ $self->file->stringify ] );
43+
$self->_add_to_queue(
44+
index_release => [ $self->file->stringify ],
45+
{ attempts => 3 }
46+
);
4147
}
4248
}
4349

lib/MetaCPAN/Script/Release.pm

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,13 +177,30 @@ sub run {
177177

178178
if ( $self->queue ) {
179179
my $job_id = $self->_add_to_queue(
180-
index_release => [$file] => { priority => 3 } );
180+
index_release => [$file],
181+
{ attempts => 3, priority => 3 }
182+
);
183+
184+
# This is a hack to deal with the fact that we don't know exactly
185+
# when 02packages gets updated. It should be about every 5
186+
# minutes. We could stop trying once something is already
187+
# "latest", but some uploads will never be "latest". Trying this X
188+
# times should be fairly cheap. If this doesn't work, there is a
189+
# cleanup cron which can set the "latest" flag, if necessary.
181190

182191
if ( $self->latest ) {
183-
$self->_add_to_queue(
184-
index_latest => [ '--distribution', $d->dist ] =>
185-
{ priority => 2, parents => [$job_id] } );
192+
for my $delay ( 150, 330, 600 ) {
193+
$self->_add_to_queue(
194+
index_latest => [ '--distribution', $d->dist ] => {
195+
attempts => 3,
196+
delay => $delay,
197+
parents => [$job_id],
198+
priority => 2,
199+
}
200+
);
201+
}
186202
}
203+
187204
}
188205
else {
189206
try { $self->import_archive($file) }

0 commit comments

Comments
 (0)