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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0b05ddc43d74cc05325b32b3a45cbc1377bee1228c2c2f8ad7f2fd717ed7b49f
4
- data.tar.gz: 8a9b5274e52a3ebc039f00e4aad18af9a7c2e645a7a246fd9e45cc474bbfb50b
3
+ metadata.gz: 3fbdde9b2b967bdd814332b72632f80105732dfa47fed9269ffaca1fce25dc52
4
+ data.tar.gz: '0689f5aaa5d36e202fbd0a8ded08ccda0aa32692c1ac417e93684e86cf26c1d1'
5
5
  SHA512:
6
- metadata.gz: ffe3b488a66c2721a25a3a995a007ff89a822d4ea2b85638b370535a4895968c5e74084ef89ee7a9bc97a325beba410f74e4ce2ecf4c941e99b00bc3f07daf4a
7
- data.tar.gz: 5632e5111b856b1fc9d34b31f8d099b584491dbb9beb623ddcff016a058b8f839900fe65554ef60619930843b5b98c4137b92f15722c5040547632b91ec5ac7e
6
+ metadata.gz: aca4bccb8d3b3a4702d3f94c5d87da3fc3ce82a0a53aa95ae235de39b6859489e5eebf7e23db8eb56c1f6d74a985b3c9e87ec6dc13e774e068ed082b721f4058
7
+ data.tar.gz: 533e9eb40b701c508817e4d072111fa3357a66cb44fa3d3e15c386cc4e41531ae5891ebe91f1a52bd0b88678a495d9efca973b3e7c355181f503cbea34cb131a
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ### v0.7.2 (2023-12-13)
2
+ - dynamic timeout stats
3
+ - deadline metric
4
+
5
+ ### v0.7.1 (2023-12-12)
6
+ - observe! and fix mode recursion
7
+
1
8
  ### v0.7.0 (2023-12-11)
2
9
  - proc support for mode
3
10
  - rails adapater and deadline
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- network_resiliency (0.7.0)
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.2.0)
90
+ datadog-ci (0.5.1)
91
91
  msgpack
92
92
  date (3.3.4)
93
- ddtrace (1.15.0)
94
- datadog-ci (~> 0.2.0)
95
- debase-ruby_core_source (= 3.2.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.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)
@@ -1,3 +1,3 @@
1
1
  module NetworkResiliency
2
- VERSION = "0.7.0"
2
+ VERSION = "0.7.2"
3
3
  end
@@ -66,8 +66,7 @@ module NetworkResiliency
66
66
 
67
67
  if @enabled.is_a?(Proc)
68
68
  # prevent recursive calls
69
- enabled = @enabled
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
- @mode.call(action)
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.0
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 00:00:00.000000000 Z
11
+ date: 2023-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug