Fix some performance issues with /admin/instances (#21907)
/admin/instances?availability=failing remains wholly unefficientpull/41/head
parent
1122697b37
commit
68d1df8bc3
|
@ -57,7 +57,7 @@ module Admin
|
||||||
end
|
end
|
||||||
|
|
||||||
def preload_delivery_failures!
|
def preload_delivery_failures!
|
||||||
warning_domains_map = DeliveryFailureTracker.warning_domains_map
|
warning_domains_map = DeliveryFailureTracker.warning_domains_map(@instances.map(&:domain))
|
||||||
|
|
||||||
@instances.each do |instance|
|
@instances.each do |instance|
|
||||||
instance.failure_days = warning_domains_map[instance.domain]
|
instance.failure_days = warning_domains_map[instance.domain]
|
||||||
|
|
|
@ -65,8 +65,13 @@ class DeliveryFailureTracker
|
||||||
domains - UnavailableDomain.all.pluck(:domain)
|
domains - UnavailableDomain.all.pluck(:domain)
|
||||||
end
|
end
|
||||||
|
|
||||||
def warning_domains_map
|
def warning_domains_map(domains = nil)
|
||||||
warning_domains.index_with { |domain| redis.scard(exhausted_deliveries_key_by(domain)) }
|
if domains.nil?
|
||||||
|
warning_domains.index_with { |domain| redis.scard(exhausted_deliveries_key_by(domain)) }
|
||||||
|
else
|
||||||
|
domains -= UnavailableDomain.where(domain: domains).pluck(:domain)
|
||||||
|
domains.index_with { |domain| redis.scard(exhausted_deliveries_key_by(domain)) }.filter { |_, days| days.positive? }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
Loading…
Reference in New Issue