semian 0.11.6 → 0.11.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/semian/circuit_breaker.rb +3 -2
- data/lib/semian/redis.rb +8 -0
- data/lib/semian/version.rb +1 -1
- data/lib/semian.rb +1 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b5e836c65bee18b5d62d92e165cd34c9beafa0d42c2c408138594d3720abb4d
|
4
|
+
data.tar.gz: 9ba054d5523c916729b2438cefad336305a1ec6818c57a21359f0e9645579050
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 370d75f2276562f2e4b0fda0732a0f2d9faa84259fd0ca8fb1f3eb4e11be98550e17f1dab5a9258333240f0db48316df6115b5e5b184344f2ec3f4438e421c37
|
7
|
+
data.tar.gz: d49a1d3abe581d78634986c3f735134a6d11a84721d97f8807cf205df76ee1a37e4864372927e6554826c8b5d74ca2d1286856a73a264e4e1e85c9e82c164902
|
@@ -7,10 +7,11 @@ module Semian
|
|
7
7
|
attr_reader :name, :half_open_resource_timeout, :error_timeout, :state, :last_error
|
8
8
|
|
9
9
|
def initialize(name, exceptions:, success_threshold:, error_threshold:,
|
10
|
-
error_timeout:, implementation:, half_open_resource_timeout: nil)
|
10
|
+
error_timeout:, implementation:, half_open_resource_timeout: nil, error_threshold_timeout: nil)
|
11
11
|
@name = name.to_sym
|
12
12
|
@success_count_threshold = success_threshold
|
13
13
|
@error_count_threshold = error_threshold
|
14
|
+
@error_threshold_timeout = error_threshold_timeout || error_timeout
|
14
15
|
@error_timeout = error_timeout
|
15
16
|
@exceptions = exceptions
|
16
17
|
@half_open_resource_timeout = half_open_resource_timeout
|
@@ -124,7 +125,7 @@ module Semian
|
|
124
125
|
end
|
125
126
|
|
126
127
|
def push_time(window, time: Time.now)
|
127
|
-
window.reject! { |err_time| err_time + @
|
128
|
+
window.reject! { |err_time| err_time + @error_threshold_timeout < time.to_i }
|
128
129
|
window << time.to_i
|
129
130
|
end
|
130
131
|
|
data/lib/semian/redis.rb
CHANGED
@@ -16,6 +16,14 @@ class Redis
|
|
16
16
|
include ::Semian::AdapterError
|
17
17
|
end
|
18
18
|
|
19
|
+
class ConnectionError < Redis::BaseConnectionError
|
20
|
+
# A Connection Reset is a fast failure and we don't want to track these errors in
|
21
|
+
# semian
|
22
|
+
def marks_semian_circuits?
|
23
|
+
message != "Connection lost (ECONNRESET)"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
19
27
|
ResourceBusyError = Class.new(SemianError)
|
20
28
|
CircuitOpenError = Class.new(SemianError)
|
21
29
|
ResolveError = Class.new(SemianError)
|
data/lib/semian/version.rb
CHANGED
data/lib/semian.rb
CHANGED
@@ -257,6 +257,7 @@ module Semian
|
|
257
257
|
name,
|
258
258
|
success_threshold: options[:success_threshold],
|
259
259
|
error_threshold: options[:error_threshold],
|
260
|
+
error_threshold_timeout: options[:error_threshold_timeout],
|
260
261
|
error_timeout: options[:error_timeout],
|
261
262
|
exceptions: Array(exceptions) + [::Semian::BaseError],
|
262
263
|
half_open_resource_timeout: options[:half_open_resource_timeout],
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: semian
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.
|
4
|
+
version: 0.11.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Francis
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2022-01-12 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rake-compiler
|