class ThriftRack::Downgrade

Public Class Methods

new(app) click to toggle source
# File lib/thrift_rack/downgrade.rb, line 3
def initialize(app)
  @app = app
  @drop_percentage = 0
  @last_sync_drop_percentage_at = Time.at(0)
end

Private Class Methods

change_downgrade(drop_percentage) click to toggle source
# File lib/thrift_rack/downgrade.rb, line 29
def change_downgrade(drop_percentage)
  ThriftRack.redis.set(downgrade_redis_key, drop_percentage)
end
close_downgrade() click to toggle source
# File lib/thrift_rack/downgrade.rb, line 37
def close_downgrade
  ThriftRack.redis.del(downgrade_redis_key)
end
current_drop_percentage() click to toggle source
# File lib/thrift_rack/downgrade.rb, line 33
def current_drop_percentage
  ThriftRack.redis.get(downgrade_redis_key).to_f
end
downgrade_redis_key() click to toggle source
# File lib/thrift_rack/downgrade.rb, line 41
def downgrade_redis_key
  "thrift_rack:downgrade"
end

Public Instance Methods

call(env) click to toggle source
# File lib/thrift_rack/downgrade.rb, line 9
def call(env)
  if rand(100) < drop_percentage
    [509, {}, ["Downgrading"]]
  else
    @app.call(env)
  end
end

Private Instance Methods

drop_percentage() click to toggle source
# File lib/thrift_rack/downgrade.rb, line 19
def drop_percentage
  if Time.now - @last_sync_drop_percentage_at > 3
    @last_sync_drop_percentage_at = Time.now
    @drop_percentage = self.class.current_drop_percentage
  else
    @drop_percentage
  end
end