correct number of args to replies worker, recursive fetching is working

Signed-off-by: sneakers-the-rat <sneakers-the-rat@protonmail.com>
This commit is contained in:
sneakers-the-rat 2024-09-18 21:07:28 -07:00 committed by Jonny Saunders
parent 97a5aa501d
commit f2f21c3233
3 changed files with 7 additions and 4 deletions

View File

@ -173,7 +173,7 @@ class Status < ApplicationRecord
REAL_TIME_WINDOW = 6.hours REAL_TIME_WINDOW = 6.hours
# debounce fetching all replies to minimize DoS # debounce fetching all replies to minimize DoS
FETCH_REPLIES_DEBOUNCE = 1.hour FETCH_REPLIES_DEBOUNCE = 30.minutes
def cache_key def cache_key
"v3:#{super}" "v3:#{super}"

View File

@ -23,7 +23,7 @@ class ActivityPub::FetchRepliesService < BaseService
@items = collection_items(collection_or_uri) @items = collection_items(collection_or_uri)
return if @items.nil? return if @items.nil?
FetchReplyWorker.push_bulk(filtered_replies) { |reply_uri| [reply_uri, { 'request_id' => request_id }, @all_replies] } FetchReplyWorker.push_bulk(filtered_replies) { |reply_uri| [reply_uri, { 'request_id' => request_id, 'all_replies' => @all_replies }] }
# Store last fetched all to debounce # Store last fetched all to debounce
@status.update(fetched_replies_at: Time.now.utc) if fetch_all_replies? @status.update(fetched_replies_at: Time.now.utc) if fetch_all_replies?

View File

@ -3,14 +3,17 @@
class FetchReplyWorker class FetchReplyWorker
include Sidekiq::Worker include Sidekiq::Worker
include ExponentialBackoff include ExponentialBackoff
include JsonLdHelper
sidekiq_options queue: 'pull', retry: 3 sidekiq_options queue: 'pull', retry: 3
def perform(child_url, options = {}, all_replies: false) def perform(child_url, options = {})
all_replies = options.delete('all_replies')
status = FetchRemoteStatusService.new.call(child_url, **options.deep_symbolize_keys) status = FetchRemoteStatusService.new.call(child_url, **options.deep_symbolize_keys)
# asked to fetch replies recursively - do the second-level calls async # asked to fetch replies recursively - do the second-level calls async
if all_replies && status.should_fetch_replies? if all_replies && status
json_status = fetch_resource(status.uri, true) json_status = fetch_resource(status.uri, true)
collection = json_status['replies'] collection = json_status['replies']