You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mastodon/app/models/home_feed.rb

45 lines
918 B
Ruby

# frozen_string_literal: true
class HomeFeed < Feed
def initialize(account)
@account = account
super(:home, account.id)
end
def async_refresh
@async_refresh ||= AsyncRefresh.new(redis_regeneration_key)
end
def regenerating?
async_refresh.running?
rescue Redis::CommandError
retry if upgrade_redis_key!
end
def regeneration_in_progress!
@async_refresh = AsyncRefresh.create(redis_regeneration_key)
rescue Redis::CommandError
upgrade_redis_key!
end
def regeneration_finished!
async_refresh.finish!
rescue Redis::CommandError
retry if upgrade_redis_key!
end
private
def redis_regeneration_key
@redis_regeneration_key = "account:#{@account.id}:regeneration"
end
def upgrade_redis_key!
if redis.type(redis_regeneration_key) == 'string'
redis.del(redis_regeneration_key)
regeneration_in_progress!
true
end
end
end