class LogStash::Filters::Sleep

Sleep a given amount of time. This will cause logstash to stall for the given amount of time. This is useful for rate limiting, etc.

Public Instance Methods

filter(event) click to toggle source
# File lib/logstash/filters/sleep.rb, line 80
def filter(event)
  
  @count += 1

  case @time
    when Integer, Float; time = @time
    when nil; # nothing
    else; time = event.sprintf(@time).to_f
  end

  if @replay
    clock = event.timestamp.to_f
    if @last_clock
      delay = clock - @last_clock
      time = delay/time
      if time > 0
        @logger.debug? && @logger.debug("Sleeping", :delay => time)
        sleep(time)
      end
    end
    @last_clock = clock
  else
    if @count >= @every.to_f
      @count = 0
      @logger.debug? && @logger.debug("Sleeping", :delay => time)
      sleep(time)
    end
  end
  filter_matched(event)
end
register() click to toggle source
# File lib/logstash/filters/sleep.rb, line 68
def register
  if @replay && @time.nil?
    # Default time multiplier is 1 when replay is set.
    @time = 1
  end
  if @time.nil?
    raise ArgumentError, "Missing required parameter 'time' for input/eventlog"
  end
  @count = 0
end