coney_island 0.1.4 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e6908c473508be8ab7f86e151c62bf2d0db07406
4
- data.tar.gz: 7611e7c037d453f77d2c167f793b4a0eea8e1b8d
3
+ metadata.gz: 05c6e2876d543540b1ff828f5964a36f55bfc101
4
+ data.tar.gz: c8a6662f9299ac76103a6df543de875a9f9e4c9c
5
5
  SHA512:
6
- metadata.gz: 112c89b1653b3945210a8b00d675735930a2330e21d45b9acd808c193a0ef986750472be8df10501c3fc31fa9f3d2ed5b670ded905e8c61ac25b02412954406d
7
- data.tar.gz: aff0f62fe7948afe9028de91d7586a930ab78f231939182ea6258e04f0a479699c01d71766288658b963e82f60718d0590f3caabffbd5c6d56b24893b7228d98
6
+ metadata.gz: 8a6073e152f4403febe9c2fe4f13693c01c4cfe9fb5b8695a816c5f6636f1e142debc26254c8501ea833d09b913ca94815007c37f4ad848a15be7c6386da199e
7
+ data.tar.gz: 46e49ad4d43124b6c8ee27661a0fd696022d3c5b7536e3e2fd41d4ad9316ceb0cea9fb879ae130dd76cfbb7e325b3da74702b0901440d8fb78b5aeb54f012391
data/lib/coney_island.rb CHANGED
@@ -45,11 +45,6 @@ module ConeyIsland
45
45
  end
46
46
 
47
47
  def self.handle_connection(log)
48
- if self.config
49
- log.info("ConeyIsland.handle_connection, notifier service is #{self.notifier}")
50
- else
51
- log.info("NO CONFIG FOUND!!!")
52
- end
53
48
  @connection ||= AMQP.connect(self.amqp_parameters)
54
49
  rescue AMQP::TCPConnectionFailed => e
55
50
  self.tcp_connection_retries ||= 0
@@ -156,6 +151,7 @@ end
156
151
  require 'coney_island/notifiers/honeybadger_notifier'
157
152
  require 'coney_island/worker'
158
153
  require 'coney_island/submitter'
154
+ require 'coney_island/job_argument_error'
159
155
  if defined? ActiveJob::QueueAdapters
160
156
  require 'coney_island/queue_adapters'
161
157
  end
@@ -0,0 +1,4 @@
1
+ module ConeyIsland
2
+ class JobArgumentError < ArgumentError
3
+ end
4
+ end
@@ -11,7 +11,8 @@ module ConeyIsland
11
11
 
12
12
  def self.submit(*args)
13
13
  if RequestStore.store[:cache_jobs]
14
- RequestStore.store[:jobs].push args
14
+ job_id = SecureRandom.uuid
15
+ RequestStore.store[:jobs][job_id] = args
15
16
  else
16
17
  self.submit!(args)
17
18
  end
@@ -19,12 +20,21 @@ module ConeyIsland
19
20
 
20
21
  def self.submit!(args)
21
22
  self.handle_connection unless @run_inline
22
- if :all_cached_jobs == args
23
- RequestStore.store[:jobs].delete_if do |job_args|
24
- self.publish_job(job_args)
23
+ begin
24
+ if :all_cached_jobs == args
25
+ Rails.logger.info("ConeyIsland::Submitter.submit! about to iterate over this many jobs: #{RequestStore.store[:jobs].length}")
26
+ RequestStore.store[:jobs].each do |job_id,job_args|
27
+ self.publish_job(job_args,job_id)
28
+ end
29
+ else
30
+ self.publish_job(args)
25
31
  end
26
- else
27
- self.publish_job(args)
32
+ rescue Exception => e
33
+ ConeyIsland.poke_the_badger(e,{
34
+ code_source: "ConeyIsland::Submitter.submit!",
35
+ message: "Error submitting job",
36
+ job_args: args
37
+ })
28
38
  end
29
39
  end
30
40
 
@@ -46,6 +56,7 @@ module ConeyIsland
46
56
  ConeyIsland.handle_connection(Rails.logger)
47
57
  @exchange = ConeyIsland.exchange
48
58
  else
59
+ Rails.logger.info("using independent submitter connection to RabbitMQ")
49
60
  self.submitter_connection
50
61
  end
51
62
  end
@@ -76,7 +87,11 @@ module ConeyIsland
76
87
  @exchange = @channel.topic('coney_island')
77
88
  end
78
89
 
79
- def self.publish_job(args)
90
+ def self.amqp_connection
91
+ @connection
92
+ end
93
+
94
+ def self.publish_job(args, job_id = nil)
80
95
  if (args.first.is_a? Class or args.first.is_a? Module) and (args[1].is_a? String or args[1].is_a? Symbol) and args.last.is_a? Hash and 3 == args.length
81
96
  klass = args.shift
82
97
  klass = klass.name
@@ -91,15 +106,19 @@ module ConeyIsland
91
106
  else
92
107
  work_queue = job_args.delete :work_queue
93
108
  work_queue ||= 'default'
94
- self.exchange.publish((job_args.to_json), routing_key: "carousels.#{work_queue}")
109
+ self.exchange.publish((job_args.to_json), routing_key: "carousels.#{work_queue}") do
110
+ RequestStore.store[:jobs].delete job_id if job_id.present?
111
+ end
95
112
  end
113
+ true
114
+ else
115
+ raise ConeyIsland::JobArgumentError.new
96
116
  end
97
- true
98
117
  end
99
118
 
100
119
  def self.cache_jobs
101
120
  RequestStore.store[:cache_jobs] = true
102
- RequestStore.store[:jobs] = []
121
+ RequestStore.store[:jobs] = {}
103
122
  end
104
123
 
105
124
  def self.flush_jobs
@@ -121,7 +140,7 @@ module ConeyIsland
121
140
 
122
141
  def self.publisher_shutdown
123
142
  EventMachine.add_periodic_timer(1) do
124
- if RequestStore.store[:jobs] && (RequestStore.store[:jobs].length > 0)
143
+ if RequestStore.store[:jobs] && RequestStore.store[:jobs].length > 0
125
144
  Rails.logger.info("Waiting for #{RequestStore.store[:jobs].length} publishes to finish")
126
145
  else
127
146
  Rails.logger.info("Shutting down coney island publisher")
@@ -1,3 +1,3 @@
1
1
  module ConeyIsland
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
@@ -0,0 +1 @@
1
+ ConeyIsland::Submitter.submit! about to iterate over this many jobs: 1
@@ -26,5 +26,12 @@ class SubmitterTest < MiniTest::Test
26
26
  @exchange.verify
27
27
  end
28
28
  end
29
+ describe "error handling" do
30
+ it "handles argument errors for jobs" do
31
+ assert_raises(ConeyIsland::JobArgumentError) do
32
+ ConeyIsland::Submitter.publish_job([:not_a_class, :add_to_list, args: [[]]])
33
+ end
34
+ end
35
+ end
29
36
  end
30
37
  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.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Draut
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-10-30 00:00:00.000000000 Z
12
+ date: 2014-10-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -108,6 +108,7 @@ files:
108
108
  - Rakefile
109
109
  - bin/coney_island
110
110
  - lib/coney_island.rb
111
+ - lib/coney_island/job_argument_error.rb
111
112
  - lib/coney_island/notifiers/airbrake_notifier.rb
112
113
  - lib/coney_island/notifiers/honeybadger_notifier.rb
113
114
  - lib/coney_island/queue_adapter.rb