perfectqueue 0.8.38 → 0.8.39
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.
- checksums.yaml +15 -0
- data/lib/perfectqueue/backend/rdb_compat.rb +50 -35
- data/lib/perfectqueue/version.rb +1 -1
- metadata +5 -23
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
Yzg4Njg1ZTRkYTgzMmRhZTJiZjhjODAyYzhiMmJjMmY3MTVkODIxMA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MmRiYzNmYjVjZmQ3MTljNTE2MDIwNGRmN2FjMmU0OTUyYzAzMTgzZg==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MDk4ODEzNWI1NGU1ZTUxMjgyYTQwYzRkY2UxNzZmYzlkMDc0MTlkMDc3ZTM4
|
10
|
+
MDM0MGJiMmJmN2Y3MmY4NDg5MjNhZDc0ZTQ3ZDY0YmZlMTA2MTI2ZDc0YTM3
|
11
|
+
YTUzMzM4N2Y4YzllOTU2NjVkNDBiYjAxMzlkMGUxNDRlMjI2ODk=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
YzZiZDViYjg2MjY3NjdjOTVjOTY4YTMwZTYyOWE0ZDI0YWYxM2M2MThjYTU3
|
14
|
+
NGI5NGIwOWY5ZDQyZGVlNzczNGQ0YzhhZWY3NjA3NTExYzFlNTI1NzY3OWE5
|
15
|
+
M2I1ZTBkOTI3NGUwNmE5MGJmMTM4MzJhYjI4M2NjNWFhNjgzNjM=
|
@@ -221,50 +221,43 @@ SQL
|
|
221
221
|
|
222
222
|
tasks = []
|
223
223
|
|
224
|
-
|
225
|
-
|
224
|
+
if @cleanup_interval_count <= 0
|
225
|
+
connect_locked {
|
226
226
|
@db["DELETE FROM `#{@table}` WHERE timeout <= ? AND created_at IS NULL", now].delete
|
227
227
|
@cleanup_interval_count = @cleanup_interval
|
228
|
-
|
229
|
-
|
230
|
-
@db.transaction do
|
231
|
-
if @table_lock
|
232
|
-
@db[@table_lock].update
|
233
|
-
end
|
234
|
-
|
235
|
-
tasks = []
|
236
|
-
@db.fetch(@sql, now, now, max_acquire) {|row|
|
237
|
-
attributes = create_attributes(nil, row)
|
238
|
-
task_token = Token.new(row[:id])
|
239
|
-
task = AcquiredTask.new(@client, row[:id], attributes, task_token)
|
240
|
-
tasks.push task
|
228
|
+
}
|
229
|
+
end
|
241
230
|
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
231
|
+
connect_locked {
|
232
|
+
tasks = []
|
233
|
+
@db.fetch(@sql, now, now, max_acquire) {|row|
|
234
|
+
attributes = create_attributes(nil, row)
|
235
|
+
task_token = Token.new(row[:id])
|
236
|
+
task = AcquiredTask.new(@client, row[:id], attributes, task_token)
|
237
|
+
tasks.push task
|
246
238
|
|
247
|
-
if
|
248
|
-
|
239
|
+
if @prefetch_break_types.include?(attributes[:type])
|
240
|
+
break
|
249
241
|
end
|
242
|
+
}
|
250
243
|
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
sql << (1..tasks.size).map { '?' }.join(',')
|
255
|
-
sql << ") AND created_at IS NOT NULL"
|
256
|
-
|
257
|
-
n = @db[*params].update
|
258
|
-
if n != tasks.size
|
259
|
-
# TODO table lock doesn't work. error?
|
260
|
-
end
|
244
|
+
if tasks.empty?
|
245
|
+
return nil
|
246
|
+
end
|
261
247
|
|
262
|
-
|
248
|
+
sql = "UPDATE `#{@table}` SET timeout=? WHERE id IN ("
|
249
|
+
params = [sql, next_timeout]
|
250
|
+
tasks.each {|t| params << t.key }
|
251
|
+
sql << (1..tasks.size).map { '?' }.join(',')
|
252
|
+
sql << ") AND created_at IS NOT NULL"
|
263
253
|
|
264
|
-
|
265
|
-
|
266
|
-
|
254
|
+
n = @db[*params].update
|
255
|
+
if n != tasks.size
|
256
|
+
# TODO table lock doesn't work. error?
|
267
257
|
end
|
258
|
+
|
259
|
+
@cleanup_interval_count -= 1
|
260
|
+
|
268
261
|
return tasks
|
269
262
|
}
|
270
263
|
end
|
@@ -341,6 +334,28 @@ SQL
|
|
341
334
|
end
|
342
335
|
|
343
336
|
protected
|
337
|
+
def connect_locked(&block)
|
338
|
+
connect {
|
339
|
+
locked = false
|
340
|
+
|
341
|
+
begin
|
342
|
+
@db.transaction do
|
343
|
+
if @table_lock
|
344
|
+
@db[@table_lock].update
|
345
|
+
locked = true
|
346
|
+
end
|
347
|
+
|
348
|
+
return block.call
|
349
|
+
end
|
350
|
+
|
351
|
+
ensure
|
352
|
+
if @use_connection_pooling && locked
|
353
|
+
@db[@table_unlock].update
|
354
|
+
end
|
355
|
+
end
|
356
|
+
}
|
357
|
+
end
|
358
|
+
|
344
359
|
def connect(&block)
|
345
360
|
now = Time.now.to_i
|
346
361
|
@mutex.synchronize do
|
data/lib/perfectqueue/version.rb
CHANGED
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: perfectqueue
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
5
|
-
prerelease:
|
4
|
+
version: 0.8.39
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Sadayuki Furuhashi
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-05
|
11
|
+
date: 2014-09-05 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: sequel
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,7 +27,6 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,7 +41,6 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rspec
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - ~>
|
52
46
|
- !ruby/object:Gem::Version
|
@@ -54,7 +48,6 @@ dependencies:
|
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - ~>
|
60
53
|
- !ruby/object:Gem::Version
|
@@ -62,7 +55,6 @@ dependencies:
|
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: simplecov
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
59
|
- - ~>
|
68
60
|
- !ruby/object:Gem::Version
|
@@ -70,7 +62,6 @@ dependencies:
|
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
66
|
- - ~>
|
76
67
|
- !ruby/object:Gem::Version
|
@@ -78,7 +69,6 @@ dependencies:
|
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: sqlite3
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
73
|
- - ~>
|
84
74
|
- !ruby/object:Gem::Version
|
@@ -86,7 +76,6 @@ dependencies:
|
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
80
|
- - ~>
|
92
81
|
- !ruby/object:Gem::Version
|
@@ -145,33 +134,26 @@ files:
|
|
145
134
|
homepage: https://github.com/treasure-data/perfectqueue
|
146
135
|
licenses:
|
147
136
|
- Apache 2.0
|
137
|
+
metadata: {}
|
148
138
|
post_install_message:
|
149
139
|
rdoc_options: []
|
150
140
|
require_paths:
|
151
141
|
- lib
|
152
142
|
required_ruby_version: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
143
|
requirements:
|
155
144
|
- - ! '>='
|
156
145
|
- !ruby/object:Gem::Version
|
157
146
|
version: '0'
|
158
|
-
segments:
|
159
|
-
- 0
|
160
|
-
hash: -3420430891342513756
|
161
147
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
162
|
-
none: false
|
163
148
|
requirements:
|
164
149
|
- - ! '>='
|
165
150
|
- !ruby/object:Gem::Version
|
166
151
|
version: '0'
|
167
|
-
segments:
|
168
|
-
- 0
|
169
|
-
hash: -3420430891342513756
|
170
152
|
requirements: []
|
171
153
|
rubyforge_project:
|
172
|
-
rubygems_version:
|
154
|
+
rubygems_version: 2.2.2
|
173
155
|
signing_key:
|
174
|
-
specification_version:
|
156
|
+
specification_version: 4
|
175
157
|
summary: Highly available distributed cron built on RDBMS
|
176
158
|
test_files:
|
177
159
|
- spec/queue_spec.rb
|