* Reduce chances of race conditions when processing deleted toots
* Prevent race condition when processing deleted toots
CONVERTED_TYPES = %w(Image Video Article Page).freeze
def perform
- return if delete_arrived_first?(object_uri) || unsupported_object_type? || invalid_origin?(@object['id'])
+ return if unsupported_object_type? || invalid_origin?(@object['id'])
RedisLock.acquire(lock_options) do |lock|
if lock.acquired?
+ return if delete_arrived_first?(object_uri)
+
@status = find_existing_status
if @status.nil?
def delete_note
return if object_uri.nil?
+ RedisLock.acquire(lock_options) do |_lock|
+ delete_later!(object_uri)
+ end
+
@status = Status.find_by(uri: object_uri, account: @account)
@status ||= Status.find_by(uri: @object['atomUri'], account: @account) if @object.is_a?(Hash) && @object['atomUri'].present?
- delete_later!(object_uri)
-
return if @status.nil?
if @status.public_visibility? || @status.unlisted_visibility?
def payload
@payload ||= Oj.dump(@json)
end
+
+ def lock_options
+ { redis: Redis.current, key: "create:#{object_uri}" }
+ end
end