An explicit error allows user agents to know the error and Sidekiq to
retry.
if lock.acquired?
@media_attachment = MediaAttachment.remote.find(params[:id])
redownload! if @media_attachment.needs_redownload? && !reject_media?
+ else
+ raise Mastodon::RaceConditionError
end
end
if lock.acquired?
@status = find_existing_status
process_status if @status.nil?
+ else
+ raise Mastodon::RaceConditionError
end
end
@status = find_status(id)
return [@status, false] unless @status.nil?
@status = process_status
+ else
+ raise Mastodon::RaceConditionError
end
end
create_account if @account.nil?
update_account
process_tags
+ else
+ raise Mastodon::RaceConditionError
end
end
if lock.acquired?
@card = PreviewCard.find_by(url: @url)
process_url if @card.nil? || @card.updated_at <= 2.weeks.ago
+ else
+ raise Mastodon::RaceConditionError
end
end
else
handle_ostatus
end
+ else
+ raise Mastodon::RaceConditionError
end
end