network_resiliency 0.7.6 → 0.7.8

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: 1638cc4c3d6d9bac433da17c88bff46f544e2047ce6e8c71c1e61eaa17def6ed
4
- data.tar.gz: c5c72835476c0e2696827143a2a6923d8153fc805b36203f4e9b5d0c169b8f9c
3
+ metadata.gz: 4b5df76818e3c5cb07bd98a1fadb1eb7c905f33a40198b7168c02c72d4f32422
4
+ data.tar.gz: 44cb15f0338ab3b49a496630eb118da9aafdd8b3d79d6746502a624b55782780
5
5
  SHA512:
6
- metadata.gz: 775af81eb1c8edb15b94889b817e4f8b6e8904ac5e4a2c80c559feb0c174ab44eb30fe25fc884d1be4c96635644e37a7f1be2eeb9160418c1a846f513340ecc2
7
- data.tar.gz: 812a5e7754f89e017396a60cd1692a350d1c47eb1a844e75525910d67dc1387698290025f5821c6a1de808402523ee390f7b424df3dd59166aa660a7e244613a
6
+ metadata.gz: b66b0ab770b6292f8ee92a22d1df5de7ce4645a4b2f5bfca58ffc8b319ad8787486ba47426e67d8cc02c1a9fcf87f7576411685b08a033674e60308108a2461e
7
+ data.tar.gz: 58f2057045c560ab5ddb09f98ff5fee88676bcfa31f62e9fddbacdacb02e75d94e0c4edb02fb5fdc67db6fdc16f47ef522321d9b1511f41176868538775105d2
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ### v0.7.8 (2024-02-07)
2
+ - lazy syncing
3
+ - timeout metric
4
+
5
+ ### v0.7.7 (2024-01-23)
6
+ - syncer stats
7
+
1
8
  ### v0.7.6 (2024-01-16)
2
9
  - dynamic timeout logging fix
3
10
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- network_resiliency (0.7.6)
4
+ network_resiliency (0.7.8)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -1,14 +1,29 @@
1
1
  module NetworkResiliency
2
2
  class Syncer < Thread
3
+ LOCK = Mutex.new
4
+
3
5
  class << self
4
- def start(redis)
5
- @instance&.shutdown
6
- @instance = new(redis)
6
+ def start
7
+ return unless NetworkResiliency.redis
8
+
9
+ LOCK.synchronize do
10
+ unless @instance&.alive?
11
+ @instance = new
12
+ NetworkResiliency.statsd&.increment("network_resiliency.syncer.start")
13
+ end
14
+
15
+ @instance
16
+ end
7
17
  end
8
18
 
9
19
  def stop
10
- @instance&.shutdown
11
- @instance = nil
20
+ LOCK.synchronize do
21
+ if @instance
22
+ @instance.shutdown
23
+ @instance.join
24
+ @instance = nil
25
+ end
26
+ end
12
27
  end
13
28
 
14
29
  def syncing?
@@ -16,9 +31,7 @@ module NetworkResiliency
16
31
  end
17
32
  end
18
33
 
19
- def initialize(redis)
20
- @redis = redis
21
-
34
+ def initialize
22
35
  super { sync }
23
36
  end
24
37
 
@@ -26,14 +39,14 @@ module NetworkResiliency
26
39
  @shutdown = true
27
40
 
28
41
  # prevent needless delay
29
- raise Interrupt if status == "sleep"
42
+ self.raise Interrupt if status == "sleep"
30
43
  end
31
44
 
32
45
  private
33
46
 
34
47
  def sync
35
48
  until @shutdown
36
- StatsEngine.sync(@redis)
49
+ StatsEngine.sync(NetworkResiliency.redis)
37
50
 
38
51
  sleep(3)
39
52
  end
@@ -1,3 +1,3 @@
1
1
  module NetworkResiliency
2
- VERSION = "0.7.6"
2
+ VERSION = "0.7.8"
3
3
  end
@@ -28,8 +28,6 @@ module NetworkResiliency
28
28
  def configure
29
29
  yield self if block_given?
30
30
 
31
- Syncer.start(redis) if redis
32
-
33
31
  unless @patched
34
32
  # patch everything that's available
35
33
  ADAPTERS.each do |adapter|
@@ -238,7 +236,7 @@ module NetworkResiliency
238
236
  }.compact,
239
237
  )
240
238
 
241
- NetworkResiliency.statsd&.gauge(
239
+ NetworkResiliency.statsd&.distribution(
242
240
  "network_resiliency.#{action}.timeout",
243
241
  timeout,
244
242
  tags: {
@@ -267,6 +265,9 @@ module NetworkResiliency
267
265
  sync: Syncer.syncing?,
268
266
  }
269
267
 
268
+ # ensure Syncer is running
269
+ Syncer.start
270
+
270
271
  NetworkResiliency.statsd&.distribution(
271
272
  "network_resiliency.#{action}.stats.n",
272
273
  stats.n,
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.6
4
+ version: 0.7.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Pepper
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-16 00:00:00.000000000 Z
11
+ date: 2024-02-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug