semian 0.11.6 → 0.11.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 22a30223a7af05c3b0cb5d06422bb2a9b9463b74fda1a1e919636225c7f5b24e
4
- data.tar.gz: e84f349ce5324c0148f922248850c0ef9c04796640bbec8ed24fe108845492d7
3
+ metadata.gz: 7b5e836c65bee18b5d62d92e165cd34c9beafa0d42c2c408138594d3720abb4d
4
+ data.tar.gz: 9ba054d5523c916729b2438cefad336305a1ec6818c57a21359f0e9645579050
5
5
  SHA512:
6
- metadata.gz: 25d16269de608362228ad8153a4056d6b46c6860a4d129417e655eef218d9fd9957f3572757b77ae0e85884db2bedf8bbf35319dac4459d9209853830d7abe51
7
- data.tar.gz: e75d7b07c99fe4546baa88a0ee89cc09bad4cfbbae9a311b1a012022a90c72683017f00536758d3073e900fa3b2f0ef203549acf793cfd633a20201306003d74
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 + @error_timeout < time.to_i }
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)
@@ -1,3 +1,3 @@
1
1
  module Semian
2
- VERSION = '0.11.6'
2
+ VERSION = '0.11.8'
3
3
  end
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.6
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: 2021-12-06 00:00:00.000000000 Z
13
+ date: 2022-01-12 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake-compiler