redis_failover 0.9.7.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,7 +6,7 @@ module RedisFailover
6
6
  @node_states = {}
7
7
  end
8
8
 
9
- def notify_state(node, state)
9
+ def notify_state(node, state, latency = nil)
10
10
  @node_states[node] = state
11
11
  end
12
12
 
@@ -50,7 +50,7 @@ module RedisFailover
50
50
  watcher.watch
51
51
  sleep(3)
52
52
  watcher.shutdown
53
- node_manager.state_for(node).should == :syncing
53
+ node_manager.state_for(node).should == :available
54
54
  end
55
55
  end
56
56
  end
@@ -1,4 +1,5 @@
1
1
  require 'rspec'
2
+ require 'ostruct'
2
3
  require 'redis_failover'
3
4
 
4
5
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
@@ -17,4 +18,4 @@ end
17
18
  def ZK.new(*args); NullObject.new; end
18
19
 
19
20
  RSpec.configure do |config|
20
- end
21
+ end
@@ -13,9 +13,11 @@ module RedisFailover
13
13
  [master, slave].each { |node| node.extend(RedisStubSupport) }
14
14
  master.make_master!
15
15
  slave.make_slave!(master)
16
+ @nodes = [master, slave]
16
17
  @unavailable = []
17
18
  @master = master
18
19
  @slaves = [slave]
20
+ @failover_strategy = Object.new
19
21
  @nodes_discovered = true
20
22
  end
21
23
 
@@ -33,34 +35,53 @@ module RedisFailover
33
35
  end
34
36
 
35
37
  def stop_processing
36
- @queue << nil
37
38
  @thread.value
38
39
  end
39
40
 
40
41
  def force_unavailable(node)
41
42
  start_processing
42
43
  node.redis.make_unavailable!
43
- notify_state(node, :unavailable)
44
+ snapshot = OpenStruct.new(
45
+ :node => node,
46
+ :available_count => 0,
47
+ :unavailable_count => 1,
48
+ :node_managers => ['nm'])
49
+ update_master_state(node, node => snapshot)
44
50
  stop_processing
45
51
  end
46
52
 
47
53
  def force_available(node)
48
54
  start_processing
49
55
  node.redis.make_available!
50
- notify_state(node, :available)
56
+ snapshot = OpenStruct.new(
57
+ :node => node,
58
+ :available_count => 1,
59
+ :unavailable_count => 0,
60
+ :node_managers => ['nm'])
61
+ update_master_state(node, node => snapshot)
51
62
  stop_processing
52
63
  end
53
64
 
54
65
  def force_syncing(node, serve_stale_reads)
55
66
  start_processing
56
67
  node.redis.force_sync_with_master(serve_stale_reads)
57
- notify_state(node, :syncing)
68
+ snapshot = OpenStruct.new(
69
+ :node => node,
70
+ :available_count => 1,
71
+ :unavailable_count => 0,
72
+ :node_managers => ['nm'])
73
+ update_master_state(node, node => snapshot)
58
74
  stop_processing
59
75
  end
60
76
 
61
- def initialize_path; end
62
- def delete_path; end
63
- def create_path; end
64
- def write_state; end
77
+ def failover_strategy_candidate(snapshots)
78
+ @slaves.pop
79
+ end
80
+
81
+ def delete_path(*args); end
82
+ def create_path(*args); end
83
+ def write_state(*args); end
84
+ def wait_until_master; end
85
+ def current_node_snapshots; {} end
65
86
  end
66
87
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis_failover
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.7.2
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-04 00:00:00.000000000 Z
12
+ date: 2012-10-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: redis
@@ -70,17 +70,23 @@ dependencies:
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  none: false
72
72
  requirements:
73
- - - ~>
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: 1.7.2
76
+ - - <
74
77
  - !ruby/object:Gem::Version
75
- version: '1.6'
78
+ version: '1.8'
76
79
  type: :runtime
77
80
  prerelease: false
78
81
  version_requirements: !ruby/object:Gem::Requirement
79
82
  none: false
80
83
  requirements:
81
- - - ~>
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: 1.7.2
87
+ - - <
82
88
  - !ruby/object:Gem::Version
83
- version: '1.6'
89
+ version: '1.8'
84
90
  - !ruby/object:Gem::Dependency
85
91
  name: rake
86
92
  requirement: !ruby/object:Gem::Requirement
@@ -153,9 +159,16 @@ files:
153
159
  - lib/redis_failover/cli.rb
154
160
  - lib/redis_failover/client.rb
155
161
  - lib/redis_failover/errors.rb
162
+ - lib/redis_failover/failover_strategy.rb
163
+ - lib/redis_failover/failover_strategy/latency.rb
156
164
  - lib/redis_failover/manual_failover.rb
157
165
  - lib/redis_failover/node.rb
158
166
  - lib/redis_failover/node_manager.rb
167
+ - lib/redis_failover/node_snapshot.rb
168
+ - lib/redis_failover/node_strategy.rb
169
+ - lib/redis_failover/node_strategy/consensus.rb
170
+ - lib/redis_failover/node_strategy/majority.rb
171
+ - lib/redis_failover/node_strategy/single.rb
159
172
  - lib/redis_failover/node_watcher.rb
160
173
  - lib/redis_failover/runner.rb
161
174
  - lib/redis_failover/util.rb
@@ -164,8 +177,15 @@ files:
164
177
  - redis_failover.gemspec
165
178
  - spec/cli_spec.rb
166
179
  - spec/client_spec.rb
180
+ - spec/failover_strategy/latency_spec.rb
181
+ - spec/failover_strategy_spec.rb
167
182
  - spec/node_manager_spec.rb
183
+ - spec/node_snapshot_spec.rb
168
184
  - spec/node_spec.rb
185
+ - spec/node_strategy/consensus_spec.rb
186
+ - spec/node_strategy/majority_spec.rb
187
+ - spec/node_strategy/single_spec.rb
188
+ - spec/node_strategy_spec.rb
169
189
  - spec/node_watcher_spec.rb
170
190
  - spec/spec_helper.rb
171
191
  - spec/support/config/multiple_environments.yml
@@ -189,7 +209,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
189
209
  version: '0'
190
210
  segments:
191
211
  - 0
192
- hash: 2936148649522258695
212
+ hash: 87105057959996156
193
213
  required_rubygems_version: !ruby/object:Gem::Requirement
194
214
  none: false
195
215
  requirements:
@@ -198,7 +218,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
198
218
  version: '0'
199
219
  segments:
200
220
  - 0
201
- hash: 2936148649522258695
221
+ hash: 87105057959996156
202
222
  requirements: []
203
223
  rubyforge_project:
204
224
  rubygems_version: 1.8.23
@@ -209,8 +229,15 @@ summary: redis_failover is a ZooKeeper-based automatic master/slave failover sol
209
229
  test_files:
210
230
  - spec/cli_spec.rb
211
231
  - spec/client_spec.rb
232
+ - spec/failover_strategy/latency_spec.rb
233
+ - spec/failover_strategy_spec.rb
212
234
  - spec/node_manager_spec.rb
235
+ - spec/node_snapshot_spec.rb
213
236
  - spec/node_spec.rb
237
+ - spec/node_strategy/consensus_spec.rb
238
+ - spec/node_strategy/majority_spec.rb
239
+ - spec/node_strategy/single_spec.rb
240
+ - spec/node_strategy_spec.rb
214
241
  - spec/node_watcher_spec.rb
215
242
  - spec/spec_helper.rb
216
243
  - spec/support/config/multiple_environments.yml