class RedisClient::CircuitBreaker

def record_error

def record_error
  now = RedisClient.now
  expiry = now - @error_timeout
  @lock.synchronize do
    if @state == :closed
      @errors.reject! { |t| t < expiry }
    end
    @errors << now
    @successes = 0
    if @state == :half_open || (@state == :closed && @errors.size >= @error_threshold)
      @state = :open
    end
  end
end