mperham-politics 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,9 @@
1
1
  = Changelog
2
2
 
3
+ == 0.2.5 (2009-02-04)
4
+
5
+ * Gracefully handle MemCache::MemCacheErrors. Just sleep until memcached comes back.
6
+
3
7
  == 0.2.4 (2009-01-28)
4
8
 
5
9
  * Reduce leader token expiration time to discourage a get/set race condition. (Brian Dainton)
@@ -86,15 +86,22 @@ module Politics
86
86
  # If another process got there first, this is a noop.
87
87
  # We add an expiry so that the master token will constantly
88
88
  # need to be refreshed (in case the current leader dies).
89
- nominate
90
-
91
89
  time = 0
92
- if leader?
93
- Politics::log.info { "#{worker_name} elected leader at #{Time.now}" }
94
- # If we are the master worker, do the work.
95
- time = time_for do
96
- result = block.call(*args)
90
+ begin
91
+ nominate
92
+
93
+ if leader?
94
+ Politics::log.info { "#{worker_name} elected leader at #{Time.now}" }
95
+ # If we are the master worker, do the work.
96
+ time = time_for do
97
+ result = block.call(*args)
98
+ end
97
99
  end
100
+ rescue MemCache::MemCacheError => me
101
+ Politics::log.error("Error from memcached, pausing until the next iteration...")
102
+ Politics::log.error(me.message)
103
+ Politics::log.error(me.backtrace.join("\n"))
104
+ self.memcache_client.reset
98
105
  end
99
106
 
100
107
  pause_until_expiry(time)
@@ -16,4 +16,4 @@ end
16
16
 
17
17
  $:.unshift(File.dirname(__FILE__) + '/../lib')
18
18
  require File.dirname(__FILE__) + '/../lib/init'
19
- #Politics::log.level = Logger::WARN
19
+ Politics::log.level = Logger::WARN
@@ -34,6 +34,17 @@ class TokenWorkerTest < Test::Unit::TestCase
34
34
  end
35
35
  end
36
36
 
37
+ should 'handle unexpected MemCache errors' do
38
+ @worker.expects(:nominate)
39
+ @worker.expects(:leader?).raises(MemCache::MemCacheError)
40
+ Politics::log.expects(:error).times(3)
41
+
42
+ @worker.register_worker('testing')
43
+ @worker.process do
44
+ assert false
45
+ end
46
+ end
47
+
37
48
  should 'process if they are leader' do
38
49
  @worker.expects(:nominate)
39
50
  @worker.expects(:leader?).returns(true)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mperham-politics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Perham
@@ -9,17 +9,17 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-01-11 00:00:00 -08:00
12
+ date: 2009-02-03 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: fiveruns-memcache-client
16
+ name: memcache-client
17
17
  version_requirement:
18
18
  version_requirements: !ruby/object:Gem::Requirement
19
19
  requirements:
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 1.5.0.3
22
+ version: 1.5.0
23
23
  version:
24
24
  - !ruby/object:Gem::Dependency
25
25
  name: starling-starling