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
 | 
			
		||||
 | 
			
		||||
    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|
 | 
			
		||||
        instance.failure_days = warning_domains_map[instance.domain]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue