perfectqueue 0.7.18 → 0.7.19

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.
data/ChangeLog CHANGED
@@ -1,4 +1,9 @@
1
1
 
2
+ == 2012-01-26 version 0.7.19
3
+
4
+ * Don't stop MonitorThread while shutting down
5
+
6
+
2
7
  == 2012-01-15 version 0.7.18
3
8
 
4
9
  * Fixed expiration logic
@@ -1,5 +1,5 @@
1
1
  module PerfectQueue
2
2
 
3
- VERSION = '0.7.18'
3
+ VERSION = '0.7.19'
4
4
 
5
5
  end
@@ -7,6 +7,7 @@ class MonitorThread
7
7
  @engine = engine
8
8
  @log = @engine.log
9
9
  @backend = engine.backend
10
+ @finished = false
10
11
 
11
12
  @timeout = conf[:timeout] || 600
12
13
  @heartbeat_interval = conf[:heartbeat_interval] || @timeout*3/4
@@ -25,15 +26,14 @@ class MonitorThread
25
26
  end
26
27
 
27
28
  def start
28
- @log.debug "running worker."
29
29
  @thread = Thread.new(&method(:run))
30
30
  end
31
31
 
32
32
  def run
33
- until @engine.finished?
33
+ unless @finished
34
34
  @mutex.synchronize {
35
35
  while true
36
- return if @engine.finished?
36
+ return if @finished
37
37
  break if @token
38
38
  @cond.wait(@mutex)
39
39
  end
@@ -48,7 +48,7 @@ class MonitorThread
48
48
  while true
49
49
  sleep 1
50
50
  @mutex.synchronize {
51
- return if @engine.finished?
51
+ return if @finished
52
52
  return unless @token
53
53
  now = Time.now.to_i
54
54
  try_extend(now)
@@ -94,6 +94,7 @@ class MonitorThread
94
94
 
95
95
  def stop
96
96
  @mutex.synchronize {
97
+ @finished = true
97
98
  @cond.broadcast
98
99
  }
99
100
  end
@@ -151,25 +152,30 @@ class Worker
151
152
  end
152
153
 
153
154
  def start
155
+ @log.debug "running worker."
154
156
  @thread = Thread.new(&method(:run))
155
- @monitor.start
156
157
  end
157
158
 
158
159
  def run
159
- while true
160
- @mutex.synchronize {
161
- while true
162
- return if @engine.finished?
163
- break if @token
164
- @cond.wait(@mutex)
160
+ @monitor.start
161
+ begin
162
+ while true
163
+ @mutex.synchronize {
164
+ while true
165
+ return if @engine.finished?
166
+ break if @token
167
+ @cond.wait(@mutex)
168
+ end
169
+ }
170
+ begin
171
+ process(@token, @task)
172
+ ensure
173
+ @token = nil
174
+ @engine.release_worker(self)
165
175
  end
166
- }
167
- begin
168
- process(@token, @task)
169
- ensure
170
- @token = nil
171
- @engine.release_worker(self)
172
176
  end
177
+ ensure
178
+ @monitor.stop
173
179
  end
174
180
  rescue
175
181
  @engine.stop($!)
@@ -205,7 +211,6 @@ class Worker
205
211
 
206
212
  def stop
207
213
  submit(nil, nil)
208
- @monitor.stop
209
214
  end
210
215
 
211
216
  def shutdown
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: perfectqueue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.18
4
+ version: 0.7.19
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-16 00:00:00.000000000Z
12
+ date: 2012-01-24 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sequel
16
- requirement: &70358573096320 !ruby/object:Gem::Requirement
16
+ requirement: &2253754180 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.26.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70358573096320
24
+ version_requirements: *2253754180
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: aws-sdk
27
- requirement: &70358573087020 !ruby/object:Gem::Requirement
27
+ requirement: &2253753580 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: 1.1.1
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70358573087020
35
+ version_requirements: *2253753580
36
36
  description:
37
37
  email: frsyuki@gmail.com
38
38
  executables: