perfectqueue 0.7.10 → 0.7.11

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog CHANGED
@@ -1,4 +1,9 @@
1
1
 
2
+ == 2011-12-18 version 0.7.11
3
+
4
+ * Optimized a SQL of RDBBackend
5
+
6
+
2
7
  == 2011-12-17 version 0.7.8, 0.7.9, 0.7.10
3
8
 
4
9
  * Supports resource limit
@@ -12,6 +12,19 @@ class RDBBackend < Backend
12
12
  connect {
13
13
  # connection test
14
14
  }
15
+ @sql = <<SQL
16
+ SELECT id, timeout, data, created_at, resource
17
+ FROM `#{@table}`
18
+ LEFT JOIN (
19
+ SELECT resource AS res,
20
+ CASE WHEN resource IS NULL THEN 0 ELSE COUNT(1) END AS running
21
+ FROM `#{@table}`
22
+ WHERE timeout > ? AND created_at IS NOT NULL
23
+ GROUP BY resource
24
+ ) AS T ON resource = res
25
+ WHERE timeout <= ? AND (running IS NULL OR running < #{MAX_RESOURCE})
26
+ ORDER BY timeout ASC LIMIT #{MAX_SELECT_ROW}
27
+ SQL
15
28
  end
16
29
 
17
30
  def create_tables
@@ -55,7 +68,7 @@ class RDBBackend < Backend
55
68
  begin
56
69
  while true
57
70
  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 created_at IS NOT NULL AND resource = T.resource) < #{MAX_RESOURCE}) ORDER BY timeout ASC LIMIT #{MAX_SELECT_ROW};", now, now) {|row|
71
+ @db.fetch(@sql, now, now) {|row|
59
72
 
60
73
  unless row[:created_at]
61
74
  # finished/canceled task
@@ -1,5 +1,5 @@
1
1
  module PerfectQueue
2
2
 
3
- VERSION = '0.7.10'
3
+ VERSION = '0.7.11'
4
4
 
5
5
  end
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.10
4
+ version: 0.7.11
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: 2011-12-17 00:00:00.000000000Z
12
+ date: 2011-12-18 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sequel
16
- requirement: &70217971584580 !ruby/object:Gem::Requirement
16
+ requirement: &70154303421520 !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: *70217971584580
24
+ version_requirements: *70154303421520
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: aws-sdk
27
- requirement: &70217971580680 !ruby/object:Gem::Requirement
27
+ requirement: &70154303420980 !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: *70217971580680
35
+ version_requirements: *70154303420980
36
36
  description:
37
37
  email: frsyuki@gmail.com
38
38
  executables: