Class: Pitchfork::ReforkCondition::RequestsCount

Inherits:
Object
  • Object
show all
Defined in:
lib/pitchfork/refork_condition.rb

Instance Method Summary collapse

Constructor Details

#initialize(request_counts) ⇒ RequestsCount

Returns a new instance of RequestsCount.



12
13
14
15
# File 'lib/pitchfork/refork_condition.rb', line 12

def initialize(request_counts)
  @limits = request_counts
  @backoff_until = nil
end

Instance Method Details

#backoff!(delay = ReforkCondition.backoff_delay) ⇒ Object



40
41
42
# File 'lib/pitchfork/refork_condition.rb', line 40

def backoff!(delay = ReforkCondition.backoff_delay)
  @backoff_until = Pitchfork.time_now + delay
end

#backoff?Boolean

Returns:

  • (Boolean)


29
30
31
32
33
34
35
36
37
38
# File 'lib/pitchfork/refork_condition.rb', line 29

def backoff?
  return false if @backoff_until.nil?

  if @backoff_until > Pitchfork.time_now
    true
  else
    @backoff_until = nil
    false
  end
end

#met?(worker, logger) ⇒ Boolean

Returns:

  • (Boolean)


17
18
19
20
21
22
23
24
25
26
27
# File 'lib/pitchfork/refork_condition.rb', line 17

def met?(worker, logger)
  if limit = @limits.fetch(worker.generation) { @limits.last }
    if worker.requests_count >= limit
      return false if backoff?

      logger.info("worker=#{worker.nr} pid=#{worker.pid} processed #{worker.requests_count} requests, triggering a refork")
      return true
    end
  end
  false
end