From 454ef42aab48e73613c4588faaacfb5941bd3e6a Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 6 Apr 2022 20:58:23 +0200 Subject: [PATCH] Fix error when encountering invalid pinned posts (#17964) --- .../fetch_featured_collection_service.rb | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/app/services/activitypub/fetch_featured_collection_service.rb b/app/services/activitypub/fetch_featured_collection_service.rb index 780741feb3..66234b7111 100644 --- a/app/services/activitypub/fetch_featured_collection_service.rb +++ b/app/services/activitypub/fetch_featured_collection_service.rb @@ -22,9 +22,19 @@ class ActivityPub::FetchFeaturedCollectionService < BaseService private def process_items(items) - status_ids = items.map { |item| value_or_id(item) } - .filter_map { |uri| ActivityPub::FetchRemoteStatusService.new.call(uri, on_behalf_of: local_follower) unless ActivityPub::TagManager.instance.local_uri?(uri) } - .filter_map { |status| status.id if status.account_id == @account.id } + status_ids = items.filter_map do |item| + uri = value_or_id(item) + next if ActivityPub::TagManager.instance.local_uri?(uri) + + status = ActivityPub::FetchRemoteStatusService.new.call(uri, on_behalf_of: local_follower) + next unless status.account_id == @account.id + + status.id + rescue ActiveRecord::RecordInvalid => e + Rails.logger.debug "Invalid pinned status #{uri}: #{e.message}" + nil + end + to_remove = [] to_add = status_ids