Fix nil error when removing status caused by race condition (#16099)

This commit is contained in:
Eugen Rochko 2021-04-24 13:35:39 +02:00 committed by GitHub
parent a6564d56d6
commit f4b7c6b619
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 6 additions and 2 deletions

View file

@ -62,7 +62,7 @@ class StatusReachFinder
end end
def followers_inboxes def followers_inboxes
if @status.reply? && @status.thread.account.local? && @status.distributable? if @status.in_reply_to_local_account? && @status.distributable?
@status.account.followers.or(@status.thread.account.followers).inboxes @status.account.followers.or(@status.thread.account.followers).inboxes
else else
@status.account.followers.inboxes @status.account.followers.inboxes

View file

@ -161,6 +161,10 @@ class Status < ApplicationRecord
attributes['local'] || uri.nil? attributes['local'] || uri.nil?
end end
def in_reply_to_local_account?
reply? && thread&.account&.local?
end
def reblog? def reblog?
!reblog_of_id.nil? !reblog_of_id.nil?
end end

View file

@ -35,7 +35,7 @@ class ActivityPub::DistributionWorker
# Deliver the status to all followers. # Deliver the status to all followers.
# If the status is a reply to another local status, also forward it to that # If the status is a reply to another local status, also forward it to that
# status' authors' followers. # status' authors' followers.
@inboxes ||= if @status.reply? && @status.thread.account.local? && @status.distributable? @inboxes ||= if @status.in_reply_to_local_account? && @status.distributable?
@account.followers.or(@status.thread.account.followers).inboxes @account.followers.or(@status.thread.account.followers).inboxes
else else
@account.followers.inboxes @account.followers.inboxes