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