don't count ignored redis errors in stats
refs CNVS-15570 test plan: trigger an ignored redis error, such as running `Canvas.redis.renamenx('no-such-key', 'new-key')` in console, and verify that rails doesn't log a 'Failure handling redis' message, or send anything to statsd. Change-Id: Ie4480fcf053d626ba8dbdf26672b18815267fa86 Reviewed-on: https://gerrit.instructure.com/41805 Reviewed-by: Cody Cutrer <cody@instructure.com> Tested-by: Jenkins <jenkins@instructure.com> Product-Review: Brian Palmer <brianp@instructure.com> QA-Review: Brian Palmer <brianp@instructure.com>
This commit is contained in:
parent
fc0d89c3d8
commit
71f0ea203b
|
@ -49,10 +49,6 @@ module Canvas::Redis
|
|||
raise reply if reply.is_a?(Exception)
|
||||
reply
|
||||
rescue ::Redis::BaseConnectionError, SystemCallError, ::Redis::CommandError => e
|
||||
CanvasStatsd::Statsd.increment("redis.errors.all")
|
||||
CanvasStatsd::Statsd.increment("redis.errors.#{CanvasStatsd::Statsd.escape(redis_name)}")
|
||||
Rails.logger.error "Failure handling redis command on #{redis_name}: #{e.inspect}"
|
||||
|
||||
# We want to rescue errors such as "max number of clients reached", but not
|
||||
# actual logic errors such as trying to evalsha a script that doesn't
|
||||
# exist.
|
||||
|
@ -62,6 +58,10 @@ module Canvas::Redis
|
|||
raise
|
||||
end
|
||||
|
||||
CanvasStatsd::Statsd.increment("redis.errors.all")
|
||||
CanvasStatsd::Statsd.increment("redis.errors.#{CanvasStatsd::Statsd.escape(redis_name)}")
|
||||
Rails.logger.error "Failure handling redis command on #{redis_name}: #{e.inspect}"
|
||||
|
||||
if self.ignore_redis_failures?
|
||||
ErrorReport.log_exception(:redis, e)
|
||||
last_redis_failure[redis_name] = Time.now
|
||||
|
|
|
@ -66,6 +66,8 @@ describe "Canvas::Redis" do
|
|||
end
|
||||
|
||||
it "should pass through other command errors" do
|
||||
CanvasStatsd::Statsd.expects(:increment).never
|
||||
|
||||
Redis::Client.any_instance.expects(:write).raises(Redis::CommandError.new("NOSCRIPT No matching script. Please use EVAL.")).once
|
||||
expect { Canvas.redis.evalsha('xxx') }.to raise_error(Redis::CommandError)
|
||||
|
||||
|
|
Loading…
Reference in New Issue