network_resiliency 0.7.0 → 0.7.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/Gemfile.lock +6 -6
- data/lib/network_resiliency/version.rb +1 -1
- data/lib/network_resiliency.rb +25 -6
- 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: 3fbdde9b2b967bdd814332b72632f80105732dfa47fed9269ffaca1fce25dc52
|
4
|
+
data.tar.gz: '0689f5aaa5d36e202fbd0a8ded08ccda0aa32692c1ac417e93684e86cf26c1d1'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aca4bccb8d3b3a4702d3f94c5d87da3fc3ce82a0a53aa95ae235de39b6859489e5eebf7e23db8eb56c1f6d74a985b3c9e87ec6dc13e774e068ed082b721f4058
|
7
|
+
data.tar.gz: 533e9eb40b701c508817e4d072111fa3357a66cb44fa3d3e15c386cc4e41531ae5891ebe91f1a52bd0b88678a495d9efca973b3e7c355181f503cbea34cb131a
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
network_resiliency (0.7.
|
4
|
+
network_resiliency (0.7.2)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -87,16 +87,16 @@ GEM
|
|
87
87
|
concurrent-ruby (1.2.2)
|
88
88
|
connection_pool (2.4.1)
|
89
89
|
crass (1.0.6)
|
90
|
-
datadog-ci (0.
|
90
|
+
datadog-ci (0.5.1)
|
91
91
|
msgpack
|
92
92
|
date (3.3.4)
|
93
|
-
ddtrace (1.
|
94
|
-
datadog-ci (~> 0.
|
95
|
-
debase-ruby_core_source (= 3.2.
|
93
|
+
ddtrace (1.18.0)
|
94
|
+
datadog-ci (~> 0.5.0)
|
95
|
+
debase-ruby_core_source (= 3.2.3)
|
96
96
|
libdatadog (~> 5.0.0.1.0)
|
97
97
|
libddwaf (~> 1.14.0.0.0)
|
98
98
|
msgpack
|
99
|
-
debase-ruby_core_source (3.2.
|
99
|
+
debase-ruby_core_source (3.2.3)
|
100
100
|
diff-lcs (1.5.0)
|
101
101
|
docile (1.4.0)
|
102
102
|
dogstatsd-ruby (4.8.3)
|
data/lib/network_resiliency.rb
CHANGED
@@ -66,8 +66,7 @@ module NetworkResiliency
|
|
66
66
|
|
67
67
|
if @enabled.is_a?(Proc)
|
68
68
|
# prevent recursive calls
|
69
|
-
|
70
|
-
disable! { !!enabled.call(adapter) }
|
69
|
+
disable! { !!@enabled.call(adapter) }
|
71
70
|
else
|
72
71
|
@enabled
|
73
72
|
end
|
@@ -84,7 +83,6 @@ module NetworkResiliency
|
|
84
83
|
end
|
85
84
|
|
86
85
|
def enable!
|
87
|
-
original = @enabled
|
88
86
|
thread_state["enabled"] = true
|
89
87
|
|
90
88
|
yield if block_given?
|
@@ -93,7 +91,6 @@ module NetworkResiliency
|
|
93
91
|
end
|
94
92
|
|
95
93
|
def disable!
|
96
|
-
original = @enabled
|
97
94
|
thread_state["enabled"] = false
|
98
95
|
|
99
96
|
yield if block_given?
|
@@ -111,8 +108,11 @@ module NetworkResiliency
|
|
111
108
|
raise ArgumentError, "invalid NetworkResiliency action: #{action}"
|
112
109
|
end
|
113
110
|
|
111
|
+
return thread_state[:mode] if thread_state.key?(:mode)
|
112
|
+
|
114
113
|
mode = if @mode.is_a?(Proc)
|
115
|
-
|
114
|
+
# prevent recursion
|
115
|
+
observe! { @mode.call(action) }
|
116
116
|
elsif @mode
|
117
117
|
@mode[action]
|
118
118
|
end || :observe
|
@@ -164,7 +164,15 @@ module NetworkResiliency
|
|
164
164
|
ACTIONS.each { |action| @mode[action] = mode }
|
165
165
|
end
|
166
166
|
|
167
|
-
@mode.freeze
|
167
|
+
@mode.freeze if @mode.is_a?(Hash)
|
168
|
+
end
|
169
|
+
|
170
|
+
def observe!
|
171
|
+
thread_state[:mode] = :observe
|
172
|
+
|
173
|
+
yield if block_given?
|
174
|
+
ensure
|
175
|
+
thread_state.delete(:mode) if block_given?
|
168
176
|
end
|
169
177
|
|
170
178
|
def deadline
|
@@ -226,6 +234,7 @@ module NetworkResiliency
|
|
226
234
|
error: error,
|
227
235
|
mode: mode(action),
|
228
236
|
attempts: (attempts if attempts > 1),
|
237
|
+
deadline_exceeded: (Time.now >= deadline if deadline),
|
229
238
|
}.compact,
|
230
239
|
)
|
231
240
|
|
@@ -313,6 +322,16 @@ module NetworkResiliency
|
|
313
322
|
}
|
314
323
|
|
315
324
|
p99 = (stats.avg + stats.stdev * 3).power_ceil
|
325
|
+
|
326
|
+
NetworkResiliency.statsd&.gauge(
|
327
|
+
"network_resiliency.#{action}.timeout.dynamic",
|
328
|
+
p99,
|
329
|
+
tags: {
|
330
|
+
adapter: adapter,
|
331
|
+
destination: destination,
|
332
|
+
},
|
333
|
+
)
|
334
|
+
|
316
335
|
timeouts = []
|
317
336
|
|
318
337
|
if max
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: network_resiliency
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Pepper
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-12-
|
11
|
+
date: 2023-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: byebug
|