coney_island 0.12.4 → 0.12.5
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 +4 -4
- data/lib/coney_island/job.rb +1 -12
- data/lib/coney_island/submitter.rb +9 -0
- data/lib/coney_island/version.rb +1 -1
- data/test/dummy/log/test.log +26 -0
- data/test/job_test.rb +1 -37
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 050d03c1dc851560dddc25519b8617422ff2adb5
|
4
|
+
data.tar.gz: ab3a5e5547555b561cead2a49974d328515759bc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5a5831c75657774b8ed15ba2f2433cb56f11f712e1c886afa4be2f50176f1e73f0c2cbf09cf6ee6e38278e5bed33e00f67dbc2c0e4be8433424ab16ea13e7594
|
7
|
+
data.tar.gz: b7eec6034c0934a255be9c66bbc885e5f8d38189543ab43a3db90714b4d258dc5f312593dbccaaa22927f99202e73c8be41a93feedba0e081853ec0228664f15
|
data/lib/coney_island/job.rb
CHANGED
@@ -65,18 +65,7 @@ module ConeyIsland
|
|
65
65
|
|
66
66
|
def handle_job
|
67
67
|
ConeyIsland::Worker.running_jobs << self
|
68
|
-
|
69
|
-
execute_job_method
|
70
|
-
end
|
71
|
-
rescue Timeout::Error => e
|
72
|
-
if self.attempts >= self.retry_limit
|
73
|
-
log.error("Request #{self.id} timed out after #{self.timeout} seconds, bailing out after 3 attempts")
|
74
|
-
ConeyIsland.poke_the_badger(e, {work_queue: self.ticket, job_payload: self.args, reason: 'Bailed out after 3 attempts'})
|
75
|
-
else
|
76
|
-
log.error("Request #{self.id} timed out after #{self.timeout} seconds on attempt number #{self.attempts}, retrying...")
|
77
|
-
self.attempts += 1
|
78
|
-
ConeyIsland.submit(self.klass, self.method_name, self.resubmit_args)
|
79
|
-
end
|
68
|
+
execute_job_method
|
80
69
|
rescue StandardError => e
|
81
70
|
log.error("Error executing #{self.class_name}##{self.method_name} #{self.id} for id #{self.instance_id} with args #{self.args}:")
|
82
71
|
log.error(e.message)
|
@@ -1,4 +1,6 @@
|
|
1
1
|
module ConeyIsland
|
2
|
+
# TODO: Refactor this to instantiate and use instance methods for
|
3
|
+
# ease of testing and thread safety.
|
2
4
|
class Submitter
|
3
5
|
|
4
6
|
def self.run_inline
|
@@ -98,6 +100,10 @@ module ConeyIsland
|
|
98
100
|
end
|
99
101
|
end
|
100
102
|
|
103
|
+
def self.connected?
|
104
|
+
!!connection && connection.connected?
|
105
|
+
end
|
106
|
+
|
101
107
|
def self.handle_connection
|
102
108
|
Rails.logger.info("ConeyIsland::Submitter.handle_connection connecting...")
|
103
109
|
self.connection = Bunny.new(self.amqp_parameters)
|
@@ -179,6 +185,9 @@ module ConeyIsland
|
|
179
185
|
work_queue ||= ConeyIsland.default_settings[:work_queue]
|
180
186
|
delay ||= ConeyIsland.default_settings[:delay]
|
181
187
|
|
188
|
+
# Make sure we have a connection if we need one
|
189
|
+
handle_connection if !running_inline? && !connected?
|
190
|
+
|
182
191
|
if self.running_inline?
|
183
192
|
# Just run this inline if we're not threaded
|
184
193
|
ConeyIsland::Job.new(nil, job_args).handle_job
|
data/lib/coney_island/version.rb
CHANGED
data/test/dummy/log/test.log
CHANGED
@@ -168,3 +168,29 @@ ConeyIsland::Submitter.handle_connection connecting...
|
|
168
168
|
Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
|
169
169
|
ConeyIsland::Submitter.handle_connection connecting...
|
170
170
|
ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
|
171
|
+
ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
|
172
|
+
ConeyIsland::Submitter.handle_connection connecting...
|
173
|
+
ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
|
174
|
+
ConeyIsland::Submitter.handle_connection connecting...
|
175
|
+
Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
|
176
|
+
ConeyIsland::Submitter.handle_connection connecting...
|
177
|
+
ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
|
178
|
+
ConeyIsland::Submitter.handle_connection connecting...
|
179
|
+
Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
|
180
|
+
ConeyIsland::Submitter.handle_connection connecting...
|
181
|
+
ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
|
182
|
+
ConeyIsland::Submitter.handle_connection connecting...
|
183
|
+
Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
|
184
|
+
ConeyIsland::Submitter.handle_connection connecting...
|
185
|
+
ConeyIsland::Submitter.handle_connection connecting...
|
186
|
+
Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
|
187
|
+
ConeyIsland::Submitter.handle_connection connecting...
|
188
|
+
ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
|
189
|
+
ConeyIsland::Submitter.handle_connection connecting...
|
190
|
+
Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
|
191
|
+
ConeyIsland::Submitter.handle_connection connecting...
|
192
|
+
ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
|
193
|
+
ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
|
194
|
+
ConeyIsland::Submitter.handle_connection connecting...
|
195
|
+
Failed to connecto to RabbitMQ Attempt #1 time(s), trying again in 0 seconds...
|
196
|
+
ConeyIsland::Submitter.handle_connection connecting...
|
data/test/job_test.rb
CHANGED
@@ -8,42 +8,6 @@ class JobTest < MiniTest::Test
|
|
8
8
|
@metadata.expect :ack, nil
|
9
9
|
end
|
10
10
|
|
11
|
-
it "retries on timeout with correct initial attempt_count and delay" do
|
12
|
-
job = ConeyIsland::Job.new(@metadata,
|
13
|
-
{ 'klass' => 'TestModel',
|
14
|
-
'method_name' => :take_too_long,
|
15
|
-
'timeout' => 0.0001 }
|
16
|
-
)
|
17
|
-
capture_submissions = lambda { |klass,method_name,options|
|
18
|
-
::JobTest.messages[:job_options] ||= []
|
19
|
-
::JobTest.messages[:job_options] << options
|
20
|
-
}
|
21
|
-
ConeyIsland.stub(:submit, capture_submissions) do
|
22
|
-
job.handle_job
|
23
|
-
end
|
24
|
-
::JobTest.messages[:job_options].last['attempt_count'].must_equal 2
|
25
|
-
::JobTest.messages[:job_options].last['delay'].must_equal 2
|
26
|
-
end
|
27
|
-
|
28
|
-
it "retries on timeout with correct subsequent attempt_count and delay" do
|
29
|
-
job = ConeyIsland::Job.new(@metadata,
|
30
|
-
{ 'klass' => 'TestModel',
|
31
|
-
'method_name' => :take_too_long,
|
32
|
-
'timeout' => 0.0001,
|
33
|
-
'attempt_count' => 2,
|
34
|
-
'delay' => 2 }
|
35
|
-
)
|
36
|
-
capture_submissions = lambda { |klass,method_name,options|
|
37
|
-
::JobTest.messages[:job_options] ||= []
|
38
|
-
::JobTest.messages[:job_options] << options
|
39
|
-
}
|
40
|
-
ConeyIsland.stub(:submit, capture_submissions) do
|
41
|
-
job.handle_job
|
42
|
-
end
|
43
|
-
::JobTest.messages[:job_options].last['attempt_count'].must_equal 3
|
44
|
-
::JobTest.messages[:job_options].last['delay'].must_equal 4
|
45
|
-
end
|
46
|
-
|
47
11
|
it "bails out on timeout if retry limit reached" do
|
48
12
|
ConeyIsland.stop_running_inline
|
49
13
|
job = ConeyIsland::Job.new(@metadata,
|
@@ -151,4 +115,4 @@ class JobTest < MiniTest::Test
|
|
151
115
|
|
152
116
|
end
|
153
117
|
end
|
154
|
-
end
|
118
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: coney_island
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.12.
|
4
|
+
version: 0.12.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Draut
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-
|
13
|
+
date: 2015-08-13 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
@@ -44,16 +44,16 @@ dependencies:
|
|
44
44
|
name: bunny
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- - "
|
47
|
+
- - "<"
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version:
|
49
|
+
version: '2.0'
|
50
50
|
type: :runtime
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
|
-
- - "
|
54
|
+
- - "<"
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version:
|
56
|
+
version: '2.0'
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
58
|
name: request_store
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
@@ -194,7 +194,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
194
194
|
version: '0'
|
195
195
|
requirements: []
|
196
196
|
rubyforge_project:
|
197
|
-
rubygems_version: 2.
|
197
|
+
rubygems_version: 2.4.5
|
198
198
|
signing_key:
|
199
199
|
specification_version: 4
|
200
200
|
summary: Want guaranteed delivery between your queue and your workers using ACKs?
|