network_resiliency 0.7.7 → 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: 9d9072bebfc7bc63628244403c76a5bf6f7f9bba54b1a91da136c03c9908c6b2
4
- data.tar.gz: 04d6f72e8e783f7d266cfa445735e82c4770259c5b8e5c44901b6127df0c738f
3
+ metadata.gz: 4b5df76818e3c5cb07bd98a1fadb1eb7c905f33a40198b7168c02c72d4f32422
4
+ data.tar.gz: 44cb15f0338ab3b49a496630eb118da9aafdd8b3d79d6746502a624b55782780
5
5
  SHA512:
6
- metadata.gz: 88b0d70e03e9297e58d128fb3f100860be84ac12115a75091ec0c042ab72c48a8bf513a225aa8a1863039f6f274f3b2215de9ed76186b220cb1a788b2fe8aea0
7
- data.tar.gz: 6ee9e91e103c5e9202472d2bd7072ae0f7fcb82d8d61db742dd1b0748d7845b99f7070672b57c6a3cf8961c02380e430591bd2cb99919103f7de1a56f98bcc5e
6
+ metadata.gz: b66b0ab770b6292f8ee92a22d1df5de7ce4645a4b2f5bfca58ffc8b319ad8787486ba47426e67d8cc02c1a9fcf87f7576411685b08a033674e60308108a2461e
7
+ data.tar.gz: 58f2057045c560ab5ddb09f98ff5fee88676bcfa31f62e9fddbacdacb02e75d94e0c4edb02fb5fdc67db6fdc16f47ef522321d9b1511f41176868538775105d2
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ### v0.7.8 (2024-02-07)
2
+ - lazy syncing
3
+ - timeout metric
4
+
1
5
  ### v0.7.7 (2024-01-23)
2
6
  - syncer stats
3
7
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- network_resiliency (0.7.7)
4
+ network_resiliency (0.7.8)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -1,20 +1,28 @@
1
1
  module NetworkResiliency
2
2
  class Syncer < Thread
3
+ LOCK = Mutex.new
4
+
3
5
  class << self
4
- def start(redis)
5
- NetworkResiliency.statsd&.increment("network_resiliency.syncer.start")
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
6
14
 
7
- stop if @instance
8
- @instance = new(redis)
15
+ @instance
16
+ end
9
17
  end
10
18
 
11
19
  def stop
12
- NetworkResiliency.statsd&.increment("network_resiliency.syncer.stop")
13
-
14
- if @instance
15
- @instance.shutdown
16
- @instance.join
17
- @instance = nil
20
+ LOCK.synchronize do
21
+ if @instance
22
+ @instance.shutdown
23
+ @instance.join
24
+ @instance = nil
25
+ end
18
26
  end
19
27
  end
20
28
 
@@ -23,9 +31,7 @@ module NetworkResiliency
23
31
  end
24
32
  end
25
33
 
26
- def initialize(redis)
27
- @redis = redis
28
-
34
+ def initialize
29
35
  super { sync }
30
36
  end
31
37
 
@@ -33,16 +39,14 @@ module NetworkResiliency
33
39
  @shutdown = true
34
40
 
35
41
  # prevent needless delay
36
- raise Interrupt if status == "sleep"
42
+ self.raise Interrupt if status == "sleep"
37
43
  end
38
44
 
39
45
  private
40
46
 
41
47
  def sync
42
48
  until @shutdown
43
- NetworkResiliency.statsd&.increment("network_resiliency.syncer.sync")
44
-
45
- StatsEngine.sync(@redis)
49
+ StatsEngine.sync(NetworkResiliency.redis)
46
50
 
47
51
  sleep(3)
48
52
  end
@@ -1,3 +1,3 @@
1
1
  module NetworkResiliency
2
- VERSION = "0.7.7"
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.7
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-23 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