cb2 0.0.3 → 0.0.4

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
- SHA1:
3
- metadata.gz: 7745238479e3b771cd4250afd72b38628690b89c
4
- data.tar.gz: 4a52b01231637cbfce2e2ab95f5a1ef05137a525
2
+ SHA256:
3
+ metadata.gz: a8af2405e21658d0d99e3d8b2a694e94c7e46201ec10bb738af3e78c50685668
4
+ data.tar.gz: 0cbdd27e23854ffbdfd5125c4dbbfcf8d6b546c5b4b07b964cdd7b5af1ff0d49
5
5
  SHA512:
6
- metadata.gz: 050ca6b08571141c02da98e85a064f76039955e180e14ddae4b071dfbb18fe6f3da4077e705f9809e9576e9553dd0b971c6241368736dfbaba93f3ec6412ccea
7
- data.tar.gz: 8b21fa54a558a8cb7caf67f6c22c37d05aa208505913bcfcfeb98cedbfc1732dd64044cc315478166410e37667af23bdcbab8e04d25b79731511e9aa3c67d8c4
6
+ metadata.gz: e8ea4cbff5fc9a88d066f1fe551bd26ddbdaa93e0c7db04b4ca3dbcf8128520f4fc7e7e22a93c6e5878227b96c5483de60009453fc2124033485ea398f11c109
7
+ data.tar.gz: 793da2f7ddd54249515b66d619885c22f30eda34a2d6c1defb2749dd509c478d9ba3fc621be35968ea956067b9c6a60169250b39e6410d9b6442e82ab71896ea
data/Gemfile.lock CHANGED
@@ -1,36 +1,46 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cb2 (0.0.2)
5
- redis (~> 3.1)
4
+ cb2 (0.0.4)
5
+ redis (~> 5, >= 4)
6
6
 
7
7
  GEM
8
8
  remote: http://rubygems.org/
9
9
  specs:
10
- diff-lcs (1.2.5)
11
- rake (10.3.2)
12
- redis (3.1.0)
10
+ connection_pool (2.4.1)
11
+ diff-lcs (1.5.0)
12
+ minitest (5.18.1)
13
+ rake (13.0.6)
14
+ redis (5.2.0)
15
+ redis-client (>= 0.22.0)
16
+ redis-client (0.22.2)
17
+ connection_pool
13
18
  rr (1.1.2)
14
- rspec (3.1.0)
15
- rspec-core (~> 3.1.0)
16
- rspec-expectations (~> 3.1.0)
17
- rspec-mocks (~> 3.1.0)
18
- rspec-core (3.1.7)
19
- rspec-support (~> 3.1.0)
20
- rspec-expectations (3.1.2)
19
+ rspec (3.12.0)
20
+ rspec-core (~> 3.12.0)
21
+ rspec-expectations (~> 3.12.0)
22
+ rspec-mocks (~> 3.12.0)
23
+ rspec-core (3.12.2)
24
+ rspec-support (~> 3.12.0)
25
+ rspec-expectations (3.12.3)
21
26
  diff-lcs (>= 1.2.0, < 2.0)
22
- rspec-support (~> 3.1.0)
23
- rspec-mocks (3.1.3)
24
- rspec-support (~> 3.1.0)
25
- rspec-support (3.1.2)
26
- timecop (0.7.1)
27
+ rspec-support (~> 3.12.0)
28
+ rspec-mocks (3.12.6)
29
+ diff-lcs (>= 1.2.0, < 2.0)
30
+ rspec-support (~> 3.12.0)
31
+ rspec-support (3.12.1)
32
+ timecop (0.9.6)
27
33
 
28
34
  PLATFORMS
29
35
  ruby
30
36
 
31
37
  DEPENDENCIES
32
38
  cb2!
39
+ minitest (> 0)
33
40
  rake (> 0)
34
41
  rr (~> 1.1)
35
42
  rspec (~> 3.1)
36
- timecop (~> 0.7)
43
+ timecop (> 0)
44
+
45
+ BUNDLED WITH
46
+ 2.3.26
data/lib/cb2/breaker.rb CHANGED
@@ -8,7 +8,7 @@ class CB2::Breaker
8
8
 
9
9
  def run
10
10
  if open?
11
- raise CB2::BreakerOpen
11
+ raise CB2::BreakerOpen.new("#{service} breaker open")
12
12
  end
13
13
 
14
14
  begin
@@ -6,7 +6,7 @@ class CB2::RollingWindow
6
6
  @duration = options.fetch(:duration)
7
7
  @threshold = options.fetch(:threshold)
8
8
  @reenable_after = options.fetch(:reenable_after)
9
- @redis = options[:redis] || Redis.current
9
+ @redis = options[:redis] || Redis.new
10
10
  end
11
11
 
12
12
  def open?
@@ -54,16 +54,17 @@ class CB2::RollingWindow
54
54
  protected
55
55
 
56
56
  def increment_rolling_window(key)
57
- t = Time.now.to_i
58
- pipeline = redis.pipelined do
57
+ t = Time.now.to_i
58
+ result = redis.pipelined do |pipeline|
59
59
  # keep the sorted set clean
60
- redis.zremrangebyscore(key, "-inf", t - duration)
60
+ pipeline.zremrangebyscore(key, "-inf", t - duration)
61
61
  # add as a random uuid because sorted sets won't take duplicate items:
62
- redis.zadd(key, t, SecureRandom.uuid)
62
+ pipeline.zadd(key, t, SecureRandom.uuid)
63
63
  # just count how many errors are left in the set
64
- redis.zcard(key)
64
+ pipeline.zcard(key)
65
65
  end
66
- return pipeline.last # return the count
66
+
67
+ result.last # return the count
67
68
  end
68
69
 
69
70
  def should_open?(error_count)
data/lib/cb2.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "redis"
2
+ require "securerandom"
2
3
 
3
4
  module CB2
4
5
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cb2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pedro Belo
8
- autorequire:
8
+ - Matt Rohrer
9
+ autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2015-06-11 00:00:00.000000000 Z
12
+ date: 2024-05-22 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: redis
@@ -16,14 +17,20 @@ dependencies:
16
17
  requirements:
17
18
  - - "~>"
18
19
  - !ruby/object:Gem::Version
19
- version: '3.1'
20
+ version: '5'
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: '4'
20
24
  type: :runtime
21
25
  prerelease: false
22
26
  version_requirements: !ruby/object:Gem::Requirement
23
27
  requirements:
24
28
  - - "~>"
25
29
  - !ruby/object:Gem::Version
26
- version: '3.1'
30
+ version: '5'
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '4'
27
34
  - !ruby/object:Gem::Dependency
28
35
  name: rake
29
36
  requirement: !ruby/object:Gem::Requirement
@@ -66,22 +73,36 @@ dependencies:
66
73
  - - "~>"
67
74
  - !ruby/object:Gem::Version
68
75
  version: '3.1'
76
+ - !ruby/object:Gem::Dependency
77
+ name: minitest
78
+ requirement: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">"
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ type: :development
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">"
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
69
90
  - !ruby/object:Gem::Dependency
70
91
  name: timecop
71
92
  requirement: !ruby/object:Gem::Requirement
72
93
  requirements:
73
- - - "~>"
94
+ - - ">"
74
95
  - !ruby/object:Gem::Version
75
- version: '0.7'
96
+ version: '0'
76
97
  type: :development
77
98
  prerelease: false
78
99
  version_requirements: !ruby/object:Gem::Requirement
79
100
  requirements:
80
- - - "~>"
101
+ - - ">"
81
102
  - !ruby/object:Gem::Version
82
- version: '0.7'
103
+ version: '0'
83
104
  description: Implementation of the circuit breaker pattern in Ruby
84
- email: pedrobelo@gmail.com
105
+ email: matt@prognostikos.com
85
106
  executables: []
86
107
  extensions: []
87
108
  extra_rdoc_files: []
@@ -94,10 +115,11 @@ files:
94
115
  - lib/cb2/strategies/percentage.rb
95
116
  - lib/cb2/strategies/rolling_window.rb
96
117
  - lib/cb2/strategies/stub.rb
97
- homepage: http://github.com/pedro/cb2
98
- licenses: []
118
+ homepage: http://github.com/prognostikos/cb2
119
+ licenses:
120
+ - MIT
99
121
  metadata: {}
100
- post_install_message:
122
+ post_install_message:
101
123
  rdoc_options: []
102
124
  require_paths:
103
125
  - lib
@@ -112,10 +134,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
134
  - !ruby/object:Gem::Version
113
135
  version: '0'
114
136
  requirements: []
115
- rubyforge_project:
116
- rubygems_version: 2.4.3
117
- signing_key:
137
+ rubygems_version: 3.5.6
138
+ signing_key:
118
139
  specification_version: 4
119
140
  summary: Circuit breaker
120
141
  test_files: []
121
- has_rdoc: