summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Van Landuyt <bob@vanlanduyt.co>2017-08-03 15:50:16 +0200
committerBob Van Landuyt <bob@vanlanduyt.co>2017-08-04 15:38:50 +0200
commit3a2aaed881f8925b08acd4204f3e130939c73946 (patch)
tree5553b4be35b3bcb20f404ce624b8217b35181133
parent0dd4c306ca953e6d09a862f9641469340f8e822f (diff)
downloadgitlab-ce-3a2aaed881f8925b08acd4204f3e130939c73946.tar.gz
Use a Struct to keep track of failure info
-rw-r--r--lib/gitlab/git/storage/circuit_breaker.rb18
1 files changed, 7 insertions, 11 deletions
diff --git a/lib/gitlab/git/storage/circuit_breaker.rb b/lib/gitlab/git/storage/circuit_breaker.rb
index c3ef82d4e98..9ea9367d4b7 100644
--- a/lib/gitlab/git/storage/circuit_breaker.rb
+++ b/lib/gitlab/git/storage/circuit_breaker.rb
@@ -2,6 +2,8 @@ module Gitlab
module Git
module Storage
class CircuitBreaker
+ FailureInfo = Struct.new(:last_failure, :failure_count)
+
attr_reader :storage,
:hostname,
:storage_path,
@@ -10,6 +12,8 @@ module Gitlab
:failure_reset_time,
:storage_timeout
+ delegate :last_failure, :failure_count, to: :failure_info
+
def self.reset_all!
pattern = "#{Gitlab::Git::Storage::REDIS_KEY_PREFIX}*"
@@ -93,7 +97,7 @@ module Gitlab
end
def track_storage_inaccessible
- @failure_info = [Time.now, failure_count + 1]
+ @failure_info = FailureInfo.new(Time.now, failure_count + 1)
Gitlab::Git::Storage.redis.with do |redis|
redis.pipelined do
@@ -107,7 +111,7 @@ module Gitlab
def track_storage_accessible
return if no_failures?
- @failure_info = [nil, 0]
+ @failure_info = FailureInfo.new(nil, 0)
Gitlab::Git::Storage.redis.with do |redis|
redis.pipelined do
@@ -117,14 +121,6 @@ module Gitlab
end
end
- def last_failure
- failure_info.first
- end
-
- def failure_count
- failure_info.last
- end
-
def failure_info
@failure_info ||= get_failure_info
end
@@ -136,7 +132,7 @@ module Gitlab
last_failure = Time.at(last_failure.to_i) if last_failure.present?
- [last_failure, failure_count.to_i]
+ FailureInfo.new(last_failure, failure_count.to_i)
end
def cache_key