kestrel-client 0.5.8 → 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 CHANGED
@@ -1 +1 @@
1
- 0.5.8
1
+ 0.6.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{kestrel-client}
8
- s.version = "0.5.8"
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 = ["Matt Freels", "Rael Dornfest"]
12
- s.date = %q{2010-10-06}
12
+ s.date = %q{2010-10-07}
13
13
  s.description = %q{Ruby client for the Kestrel queue server}
14
14
  s.email = %q{rael@twitter.com}
15
15
  s.extra_rdoc_files = [
@@ -8,6 +8,13 @@ class Kestrel::Client::Transactional < Kestrel::Client::Proxy
8
8
  # there is no current open transaction
9
9
  class NoOpenTransaction < StandardError; end
10
10
 
11
+ # Raised when a retry fails when max retries is exceeded
12
+ class RetriesExceeded < StandardError
13
+ def initialize(job)
14
+ super "Max retries of #{job.retries} exceeded for item: #{job.job.inspect}"
15
+ end
16
+ end
17
+
11
18
  class RetryableJob < Struct.new(:retries, :job); end
12
19
 
13
20
  # Number of times to retry a job before giving up
@@ -94,10 +101,14 @@ class Kestrel::Client::Transactional < Kestrel::Client::Proxy
94
101
 
95
102
  job.retries += 1
96
103
 
97
- client.set(current_queue + "_errors", job) if job.retries < @max_retries
98
- close_last_transaction
104
+ if job.retries < @max_retries
105
+ client.set(current_queue + "_errors", job)
106
+ else
107
+ raise RetriesExceeded.new(job)
108
+ end
99
109
 
100
- job.retries < @max_retries
110
+ ensure
111
+ close_last_transaction
101
112
  end
102
113
 
103
114
  private
@@ -83,7 +83,7 @@ describe "Kestrel::Client::Transactional" do
83
83
  get_job.should == :mcguffin
84
84
  @kestrel.current_try.should == Kestrel::Client::Transactional::DEFAULT_RETRIES
85
85
 
86
- @kestrel.retry
86
+ lambda { @kestrel.retry }.should raise_error(Kestrel::Client::Transactional::RetriesExceeded)
87
87
  @kestrel.get(@queue) # simulate next get run
88
88
  end
89
89
  end
@@ -207,7 +207,7 @@ describe "Kestrel::Client::Transactional" do
207
207
  mock(@raw_kestrel_client).set(@queue + "_errors", anything).never
208
208
  mock(@raw_kestrel_client).get_from_last(@queue + "_errors/close")
209
209
  @kestrel.get(@queue)
210
- @kestrel.retry.should be_false
210
+ lambda { @kestrel.retry }.should raise_error(Kestrel::Client::Transactional::RetriesExceeded)
211
211
  end
212
212
 
213
213
  it "closes an open transaction with no retries" do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kestrel-client
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 7
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 5
9
- - 8
10
- version: 0.5.8
8
+ - 6
9
+ - 0
10
+ version: 0.6.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Matt Freels
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-10-06 00:00:00 -07:00
19
+ date: 2010-10-07 00:00:00 -07:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency