perfectqueue 0.7.9 → 0.7.10

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- == 2011-12-17 version 0.7.8, 0.7.9
2
+ == 2011-12-17 version 0.7.8, 0.7.9, 0.7.10
3
3
 
4
4
  * Supports resource limit
5
5
 
@@ -55,7 +55,7 @@ class RDBBackend < Backend
55
55
  begin
56
56
  while true
57
57
  rows = 0
58
- @db.fetch("SELECT id, timeout, data, created_at, resource FROM `#{@table}` AS T WHERE timeout <= ? AND (resource IS NULL OR (SELECT count(1) FROM `#{@table}` WHERE timeout > ? AND resource = T.resource) < #{MAX_RESOURCE}) ORDER BY timeout ASC LIMIT #{MAX_SELECT_ROW};", now, now) {|row|
58
+ @db.fetch("SELECT id, timeout, data, created_at, resource FROM `#{@table}` AS T WHERE timeout <= ? AND (resource IS NULL OR (SELECT count(1) FROM `#{@table}` WHERE timeout > ? AND created_at IS NOT NULL AND resource = T.resource) < #{MAX_RESOURCE}) ORDER BY timeout ASC LIMIT #{MAX_SELECT_ROW};", now, now) {|row|
59
59
 
60
60
  unless row[:created_at]
61
61
  # finished/canceled task
@@ -82,7 +82,7 @@ class RDBBackend < Backend
82
82
 
83
83
  def finish(id, delete_timeout=3600, now=Time.now.to_i)
84
84
  connect {
85
- n = @db["UPDATE `#{@table}` SET timeout=?, created_at=NULL WHERE id=? AND created_at IS NOT NULL;", now+delete_timeout, id].update
85
+ n = @db["UPDATE `#{@table}` SET timeout=?, created_at=NULL, resource=NULL WHERE id=? AND created_at IS NOT NULL;", now+delete_timeout, id].update
86
86
  return n > 0
87
87
  }
88
88
  end
@@ -1,5 +1,5 @@
1
1
  module PerfectQueue
2
2
 
3
- VERSION = '0.7.9'
3
+ VERSION = '0.7.10'
4
4
 
5
5
  end
data/test/backend_test.rb CHANGED
@@ -216,7 +216,7 @@ class BackendTest < Test::Unit::TestCase
216
216
  assert_equal 'data1', task.data
217
217
  end
218
218
 
219
- it 'resource' do
219
+ it 'resource limit' do
220
220
  clean_backend
221
221
 
222
222
  db1 = open_backend
@@ -230,10 +230,12 @@ class BackendTest < Test::Unit::TestCase
230
230
  ok = db1.submit(@key_prefix+'test5', 'data2', time, 'user2')
231
231
  assert_equal true, ok
232
232
 
233
+ token_1 = nil
234
+ task_1 = nil
233
235
  4.times do
234
- token, task = db1.acquire(time+TIMEOUT, time)
235
- assert_not_equal nil, task
236
- assert_equal "user1", task.resource
236
+ token_1, task_1 = db1.acquire(time+TIMEOUT, time)
237
+ assert_not_equal nil, task_1
238
+ assert_equal "user1", task_1.resource
237
239
  end
238
240
 
239
241
  token, task = db1.acquire(time+TIMEOUT, time)
@@ -242,6 +244,13 @@ class BackendTest < Test::Unit::TestCase
242
244
 
243
245
  token, task = db1.acquire(time+TIMEOUT, time)
244
246
  assert_equal nil, task
247
+
248
+ ok = db1.finish(token_1)
249
+ assert_equal true, ok
250
+
251
+ token, task = db1.acquire(time+TIMEOUT, time)
252
+ assert_not_equal nil, task
253
+ assert_equal "user1", task.resource
245
254
  end
246
255
  end
247
256
 
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.9
4
+ version: 0.7.10
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-12-17 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sequel
16
- requirement: &70264336756840 !ruby/object:Gem::Requirement
16
+ requirement: &70217971584580 !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: *70264336756840
24
+ version_requirements: *70217971584580
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: aws-sdk
27
- requirement: &70264336756360 !ruby/object:Gem::Requirement
27
+ requirement: &70217971580680 !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: *70264336756360
35
+ version_requirements: *70217971580680
36
36
  description:
37
37
  email: frsyuki@gmail.com
38
38
  executables: