about summary refs log tree commit diff
path: root/app/lib/delivery_failure_tracker.rb
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2022-12-01 10:32:10 +0100
committerGitHub <noreply@github.com>2022-12-01 10:32:10 +0100
commit68d1df8bc3b25f03f41af7cb06bc2ef6f0ed6ad5 (patch)
tree2ca2bbd8cc6960856d0ce4367966401f1d2f61b5 /app/lib/delivery_failure_tracker.rb
parent1122697b375da82cbb156b73eb1015ae066fc6ee (diff)
Fix some performance issues with /admin/instances (#21907)
/admin/instances?availability=failing remains wholly unefficient
Diffstat (limited to 'app/lib/delivery_failure_tracker.rb')
-rw-r--r--app/lib/delivery_failure_tracker.rb9
1 files changed, 7 insertions, 2 deletions
diff --git a/app/lib/delivery_failure_tracker.rb b/app/lib/delivery_failure_tracker.rb
index 7c4e28eb7..66c1fd8c0 100644
--- a/app/lib/delivery_failure_tracker.rb
+++ b/app/lib/delivery_failure_tracker.rb
@@ -65,8 +65,13 @@ class DeliveryFailureTracker
       domains - UnavailableDomain.all.pluck(:domain)
     end
 
-    def warning_domains_map
-      warning_domains.index_with { |domain| redis.scard(exhausted_deliveries_key_by(domain)) }
+    def warning_domains_map(domains = nil)
+      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
 
     private