Fix some performance issues with /admin/instances (#21907)
/admin/instances?availability=failing remains wholly unefficient
This commit is contained in:
		
							parent
							
								
									2140299638
								
							
						
					
					
						commit
						1bef772764
					
				
					 2 changed files with 8 additions and 3 deletions
				
			
		| 
						 | 
					@ -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 a new issue