network_resiliency 0.7.7 → 0.7.9

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: a284503d2243c5b00f5ab5fc09ca842667ebb6db7ab489fd8fa0ce033b2e4b66
4
+ data.tar.gz: bcf55039bcfa3e4969a7d1a26f3393b362dd64b7318d0322b0cbe1755ce7c0f7
5
5
  SHA512:
6
- metadata.gz: 88b0d70e03e9297e58d128fb3f100860be84ac12115a75091ec0c042ab72c48a8bf513a225aa8a1863039f6f274f3b2215de9ed76186b220cb1a788b2fe8aea0
7
- data.tar.gz: 6ee9e91e103c5e9202472d2bd7072ae0f7fcb82d8d61db742dd1b0748d7845b99f7070672b57c6a3cf8961c02380e430591bd2cb99919103f7de1a56f98bcc5e
6
+ metadata.gz: 6a40fb761f8b03e3af86afcf9c37247b6e8666bd5326fb5d8922ed35b78d9fd95c700de8a4ce142d014143d55eaf4773dbc152a56dea031400151cd265dcaba7
7
+ data.tar.gz: f74ef650a917987afbcb72133f6b26491963cac0cb595f5f2505f49c70b0aa67dd5c1db8f290f3ad6a3708a4d950397111b5c487934082d403e2cd7f41e99cd1
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ### v0.7.9 (2024-02-07)
2
+ - sync frequency
3
+
4
+ ### v0.7.8 (2024-02-07)
5
+ - lazy syncing
6
+ - timeout metric
7
+
1
8
  ### v0.7.7 (2024-01-23)
2
9
  - syncer stats
3
10
 
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.9)
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,18 +39,16 @@ 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
- sleep(3)
51
+ sleep(10)
48
52
  end
49
53
  rescue Interrupt
50
54
  end
@@ -1,3 +1,3 @@
1
1
  module NetworkResiliency
2
- VERSION = "0.7.7"
2
+ VERSION = "0.7.9"
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.9
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-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug