Class: Karafka::TimeTrackers::Poll
- Defined in:
 - lib/karafka/time_trackers/poll.rb
 
Overview
Object used to keep track of time we’ve used running certain operations. Polling is running in a single thread, thus we do not have to worry about this being thread-safe.
Instance Attribute Summary collapse
- 
  
    
      #attempts  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Returns the value of attribute attempts.
 - 
  
    
      #remaining  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Returns the value of attribute remaining.
 
Instance Method Summary collapse
- 
  
    
      #backoff  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Sleeps for amount of time matching attempt, so we sleep more with each attempt in case of a retry.
 - 
  
    
      #checkpoint  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Stops time tracking of a given piece of code and updates the remaining time.
 - 
  
    
      #exceeded?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
Did we exceed the time limit.
 - 
  
    
      #initialize(total_time)  ⇒ TimeTracker 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
Time poll instance.
 - 
  
    
      #retryable?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
If anything went wrong, can we retry after a backoff period or not (do we have enough time).
 - 
  
    
      #start  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Starts time tracking.
 
Constructor Details
#initialize(total_time) ⇒ TimeTracker
Returns time poll instance.
      23 24 25 26 27  | 
    
      # File 'lib/karafka/time_trackers/poll.rb', line 23 def initialize(total_time) @remaining = total_time @attempts = 0 super() end  | 
  
Instance Attribute Details
#attempts ⇒ Object (readonly)
Returns the value of attribute attempts.
      19 20 21  | 
    
      # File 'lib/karafka/time_trackers/poll.rb', line 19 def attempts @attempts end  | 
  
#remaining ⇒ Object (readonly)
Returns the value of attribute remaining.
      19 20 21  | 
    
      # File 'lib/karafka/time_trackers/poll.rb', line 19 def remaining @remaining end  | 
  
Instance Method Details
#backoff ⇒ Object
Sleeps for amount of time matching attempt, so we sleep more with each attempt in case of
a retry.
  
      53 54 55 56 57 58 59  | 
    
      # File 'lib/karafka/time_trackers/poll.rb', line 53 def backoff # backoff should not be included in the remaining time computation, otherwise it runs # shortly, never back-offing beyond a small number because of the sleep @remaining += backoff_interval # Sleep requires seconds not ms sleep(backoff_interval / 1_000.0) end  | 
  
#checkpoint ⇒ Object
Stops time tracking of a given piece of code and updates the remaining time.
      41 42 43  | 
    
      # File 'lib/karafka/time_trackers/poll.rb', line 41 def checkpoint @remaining -= (monotonic_now - @started_at) end  | 
  
#exceeded? ⇒ Boolean
Returns did we exceed the time limit.
      30 31 32  | 
    
      # File 'lib/karafka/time_trackers/poll.rb', line 30 def exceeded? @remaining <= 0 end  | 
  
#retryable? ⇒ Boolean
Returns If anything went wrong, can we retry after a backoff period or not (do we have enough time).
      47 48 49  | 
    
      # File 'lib/karafka/time_trackers/poll.rb', line 47 def retryable? remaining > backoff_interval end  | 
  
#start ⇒ Object
Starts time tracking.
      35 36 37 38  | 
    
      # File 'lib/karafka/time_trackers/poll.rb', line 35 def start @attempts += 1 @started_at = monotonic_now end  |