From 12ed9b1054d8882f8a82c2a165c04ed53fdcf01f Mon Sep 17 00:00:00 2001 From: Graham Knop Date: Thu, 21 Nov 2024 23:43:26 +0100 Subject: [PATCH] be more resilient to bad data when updating contributors When trying to update all contributor data, it will fail because there are some broken releases in the index. While those should be fixed, they shouldn't cause the contributor script to fail. --- lib/MetaCPAN/Script/Role/Contributor.pm | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Script/Role/Contributor.pm b/lib/MetaCPAN/Script/Role/Contributor.pm index 819412ba2..63a54e682 100644 --- a/lib/MetaCPAN/Script/Role/Contributor.pm +++ b/lib/MetaCPAN/Script/Role/Contributor.pm @@ -25,9 +25,28 @@ sub update_contributors { }, ); - my $bulk = $self->es->bulk_helper( es_doc_path('contributor') ); + my $report = sub { + my ( $action, $result, $i ) = @_; + if ( $i == 0 ) { + log_info {'flushing contributor updates'}; + } + }; + + my $bulk = $self->es->bulk_helper( + es_doc_path('contributor'), + on_success => $report, + on_error => $report, + ); + + log_info { 'updating contributors for ' . $scroll->total . ' releases' }; while ( my $release = $scroll->next ) { + my $source = $release->{_source}; + my $name = $source->{name}; + if ( !( $name && $source->{author} && $source->{distribution} ) ) { + Dlog_warn {"found broken release: $_"} $release; + next; + } log_debug { 'updating contributors for ' . $release->{_source}{name} }; my $actions = $self->release_contributor_update_actions( $release->{_source} );