hotseat 0.5.1 → 0.6.0
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/VERSION +1 -1
- data/hotseat.gemspec +2 -2
- data/lib/hotseat/queue.rb +15 -0
- data/spec/hotseat/queue_spec.rb +35 -0
- metadata +13 -13
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.6.0
|
data/hotseat.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "hotseat"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.6.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Elad Kehat"]
|
12
|
-
s.date = "2012-02-
|
12
|
+
s.date = "2012-02-27"
|
13
13
|
s.email = "eladkehat@gmail.com"
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE.txt",
|
data/lib/hotseat/queue.rb
CHANGED
@@ -164,6 +164,21 @@ module Hotseat
|
|
164
164
|
end
|
165
165
|
end
|
166
166
|
|
167
|
+
def unlease_bulk(doc_ids)
|
168
|
+
rows = @db.bulk_load(doc_ids)['rows']
|
169
|
+
docs, missing = rows.partition {|row| row['doc'] }
|
170
|
+
docs.map! {|row| row['doc'] }
|
171
|
+
locked, unlocked = docs.partition {|doc| locked? doc }
|
172
|
+
locked.each do |doc|
|
173
|
+
remove_lock( doc )
|
174
|
+
end
|
175
|
+
@db.bulk_save locked, use_uuids=false
|
176
|
+
{'errors' =>
|
177
|
+
unlocked.map {|doc| {'id' => doc['_id'], 'error' => 'unlocked' } } +
|
178
|
+
missing.map {|row| {'id' => row['key'], 'error' => row['error']} }
|
179
|
+
}
|
180
|
+
end
|
181
|
+
|
167
182
|
def remove(doc_id, opts={})
|
168
183
|
@db.update_doc(doc_id) do |doc|
|
169
184
|
raise(QueueError, "Document was already removed") unless locked?(doc)
|
data/spec/hotseat/queue_spec.rb
CHANGED
@@ -318,6 +318,41 @@ module Hotseat
|
|
318
318
|
end
|
319
319
|
end
|
320
320
|
|
321
|
+
describe "#unlease_bulk" do
|
322
|
+
before(:each) do
|
323
|
+
reset_test_queue!
|
324
|
+
enqueue( create_some_docs(10) )
|
325
|
+
@leased = @q.lease 8
|
326
|
+
@doc_ids = @leased.take(5).map{|doc| doc['_id'] }
|
327
|
+
end
|
328
|
+
|
329
|
+
it "should unlock multiple leased documents" do
|
330
|
+
@q.unlease_bulk @doc_ids
|
331
|
+
docs = DB.get_bulk(@doc_ids)['rows'].map{|row| row['doc']}
|
332
|
+
docs.each do |doc|
|
333
|
+
doc.should have_key(@q.config[:object_name])
|
334
|
+
doc[@q.config[:object_name]].should_not have_key('lock')
|
335
|
+
end
|
336
|
+
end
|
337
|
+
|
338
|
+
it "should report docs whose lock was already removed" do
|
339
|
+
rem_ids = @doc_ids.take(2)
|
340
|
+
@q.unlease_bulk rem_ids
|
341
|
+
res = @q.unlease_bulk @doc_ids
|
342
|
+
res['errors'].should have(2).errors
|
343
|
+
res['errors'].map{|err| err['id']}.should == rem_ids
|
344
|
+
end
|
345
|
+
|
346
|
+
it "should report docs that are missing from the database" do
|
347
|
+
rem_ids = @doc_ids.take(2)
|
348
|
+
docs = rem_ids.map{|id| @q.db.get(id) }
|
349
|
+
docs.each {|doc| @q.db.delete_doc(doc) }
|
350
|
+
res = @q.unlease_bulk @doc_ids
|
351
|
+
res['errors'].should have(2).errors
|
352
|
+
res['errors'].map{|err| err['id']}.should == rem_ids
|
353
|
+
end
|
354
|
+
end
|
355
|
+
|
321
356
|
describe "#remove" do
|
322
357
|
before(:each) do
|
323
358
|
reset_test_queue!
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hotseat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
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-02-
|
12
|
+
date: 2012-02-27 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: couchrest
|
16
|
-
requirement: &
|
16
|
+
requirement: &76050580 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.1.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *76050580
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &76049460 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *76049460
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: yard
|
38
|
-
requirement: &
|
38
|
+
requirement: &76048250 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *76048250
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
|
-
requirement: &
|
49
|
+
requirement: &76030030 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *76030030
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: jeweler
|
60
|
-
requirement: &
|
60
|
+
requirement: &76028720 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *76028720
|
69
69
|
description:
|
70
70
|
email: eladkehat@gmail.com
|
71
71
|
executables: []
|
@@ -103,7 +103,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
103
103
|
version: '0'
|
104
104
|
segments:
|
105
105
|
- 0
|
106
|
-
hash:
|
106
|
+
hash: -832976563
|
107
107
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
108
|
none: false
|
109
109
|
requirements:
|