semian 0.7.7 → 0.7.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 +4 -4
- data/lib/semian.rb +6 -3
- data/lib/semian/redis.rb +10 -1
- data/lib/semian/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4a3b9442939974d625257b6cfe0c0d450abe891b
|
4
|
+
data.tar.gz: 4b15314ebcee0b7abc7eb840431c26d823d82735
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 025d34c3dd67ee1822b2fdea88747779cc57bb08ad5f5a8ae00e0842025d863c6c0c48b51b108559b754ef9fb159f6b68ced52a3153905a3ed52f4c4e477cb1f
|
7
|
+
data.tar.gz: 74d232c886d8dfca1e1023069d57a07340a58e0293ba3054bfc571e8b362b497b99ad57b0769c5fc5e650f854704d2a4f36e36318e3680e5163111ab3fd4b148
|
data/lib/semian.rb
CHANGED
@@ -234,7 +234,7 @@ module Semian
|
|
234
234
|
def create_circuit_breaker(name, **options)
|
235
235
|
circuit_breaker = options.fetch(:circuit_breaker, true)
|
236
236
|
return unless circuit_breaker
|
237
|
-
|
237
|
+
require_keys!([:success_threshold, :error_threshold, :error_timeout], options)
|
238
238
|
implementation = options[:thread_safety_disabled] ? ::Semian::Simple : ::Semian::ThreadSafe
|
239
239
|
|
240
240
|
exceptions = options[:exceptions] || []
|
@@ -257,8 +257,11 @@ module Semian
|
|
257
257
|
Resource.new(name, tickets: options[:tickets], quota: options[:quota], permissions: permissions, timeout: timeout)
|
258
258
|
end
|
259
259
|
|
260
|
-
def
|
261
|
-
required
|
260
|
+
def require_keys!(required = [], **options)
|
261
|
+
diff = required - options.keys
|
262
|
+
unless diff.empty?
|
263
|
+
raise ArgumentError, "Missing required arguments for Semian: #{diff}"
|
264
|
+
end
|
262
265
|
end
|
263
266
|
end
|
264
267
|
|
data/lib/semian/redis.rb
CHANGED
@@ -14,6 +14,7 @@ class Redis
|
|
14
14
|
|
15
15
|
ResourceBusyError = Class.new(SemianError)
|
16
16
|
CircuitOpenError = Class.new(SemianError)
|
17
|
+
ResolveError = Class.new(SemianError)
|
17
18
|
|
18
19
|
alias_method :_original_initialize, :initialize
|
19
20
|
|
@@ -48,6 +49,7 @@ module Semian
|
|
48
49
|
|
49
50
|
ResourceBusyError = ::Redis::ResourceBusyError
|
50
51
|
CircuitOpenError = ::Redis::CircuitOpenError
|
52
|
+
ResolveError = ::Redis::ResolveError
|
51
53
|
|
52
54
|
# The naked methods are exposed as `raw_query` and `raw_connect` for instrumentation purpose
|
53
55
|
def self.included(base)
|
@@ -71,7 +73,14 @@ module Semian
|
|
71
73
|
end
|
72
74
|
|
73
75
|
def connect
|
74
|
-
acquire_semian_resource(adapter: :redis, scope: :connection)
|
76
|
+
acquire_semian_resource(adapter: :redis, scope: :connection) do
|
77
|
+
begin
|
78
|
+
raw_connect
|
79
|
+
rescue SocketError, RuntimeError => e
|
80
|
+
raise ResolveError.new(semian_identifier) if e.message =~ /(can't resolve)|(name or service not known)/i
|
81
|
+
raise
|
82
|
+
end
|
83
|
+
end
|
75
84
|
end
|
76
85
|
|
77
86
|
private
|
data/lib/semian/version.rb
CHANGED
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.7.
|
4
|
+
version: 0.7.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: 2018-
|
13
|
+
date: 2018-04-05 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rake-compiler
|