barbeque 2.1.0 → 2.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 55e5ddccef50d8012d519620dec44f063f85f29b399bc6eb4a9a540b4df31821
4
- data.tar.gz: 7a05fba8fd639bd69c6f9dacb95cfe2d4304ff18723f13eda6d6dc7a8f8e09f9
3
+ metadata.gz: 8a27e1555a662fc67cff6d20504bff8e7649f761c4c7500e14f8200347a822ee
4
+ data.tar.gz: 535818478a8701f4c1e00f9600328b9e0e2d6c7ccd45ca16e3851319ac8a4676
5
5
  SHA512:
6
- metadata.gz: 826610de1fa826d2478307188ffd96ad7f7a73d039556261cf07998ece853c9b68cd95ed8ed7f3034f519d63d69674b5aa3fbfef65a08cd3d179bb21e0fc8992
7
- data.tar.gz: 14aba5a62e4a4150463de75a357641012eddcb964c889b5820eabd42c95f0caec971298473d5b7b1977989c1297898b53b5bc602b9c015a22b217f2220d7e2d5
6
+ metadata.gz: 768ca47dc94d8479804de1a4c9ddbb3f989732eddbb9c8eb2bbc9778503c076d965929a8a5990e663209ea78e87ca61a62cbd874f2d42876018ba339f15031a9
7
+ data.tar.gz: d916df13c88917745c35e1e32c09b1e0c5d2ad1c2801abee8ec35ec2004d07f9048d1372bdf182652e89966c0249608bf2dabc7d0389d9eecac8708aa78cbcf3
@@ -2,6 +2,7 @@ class Barbeque::JobQueue < Barbeque::ApplicationRecord
2
2
  SQS_NAME_PREFIX = ENV['BARBEQUE_SQS_NAME_PREFIX'] || 'Barbeque-'
3
3
  SQS_NAME_MAX_LENGTH = 80
4
4
 
5
+ has_many :job_executions, dependent: :destroy
5
6
  has_many :sns_subscriptions, class_name: 'SNSSubscription', dependent: :destroy
6
7
 
7
8
  # SQS queue allows [a-zA-Z0-9_-]+ as queue name. Its maximum length is 80.
@@ -1,13 +1,15 @@
1
1
  require 'barbeque/exception_handler'
2
+ require 'barbeque/executor'
2
3
 
3
4
  module Barbeque
4
5
  class ExecutionPoller
5
- def initialize
6
+ def initialize(job_queue)
7
+ @job_queue = job_queue
6
8
  @stop_requested = false
7
9
  end
8
10
 
9
11
  def run
10
- Barbeque::JobExecution.running.find_in_batches do |job_executions|
12
+ @job_queue.job_executions.running.find_in_batches do |job_executions|
11
13
  job_executions.shuffle.each do |job_execution|
12
14
  if @stop_requested
13
15
  return
@@ -6,8 +6,8 @@ module Barbeque
6
6
  class MessageQueue
7
7
  attr_reader :job_queue
8
8
 
9
- def initialize(queue_name)
10
- @job_queue = Barbeque::JobQueue.find_by!(name: queue_name)
9
+ def initialize(job_queue)
10
+ @job_queue = job_queue
11
11
  @messages = []
12
12
  @stop = false
13
13
  end
@@ -1,11 +1,19 @@
1
+ require 'barbeque/exception_handler'
2
+ require 'barbeque/executor'
3
+
1
4
  module Barbeque
2
5
  class RetryPoller
3
- def initialize
6
+ def initialize(job_queue)
7
+ @job_queue = job_queue
4
8
  @stop_requested = false
5
9
  end
6
10
 
7
11
  def run
8
- Barbeque::JobRetry.running.find_in_batches do |job_retries|
12
+ Barbeque::JobRetry
13
+ .joins(:job_execution)
14
+ .running
15
+ .merge(Barbeque::JobExecution.where(job_queue: @job_queue))
16
+ .find_in_batches do |job_retries|
9
17
  job_retries.shuffle.each do |job_retry|
10
18
  if @stop_requested
11
19
  return
@@ -10,10 +10,8 @@ module Barbeque
10
10
  # it to message handler.
11
11
 
12
12
  class Runner
13
- DEFAULT_QUEUE = 'default'
14
-
15
- def initialize(queue_name: ENV['BARBEQUE_QUEUE'] || DEFAULT_QUEUE)
16
- @queue_name = queue_name
13
+ def initialize(job_queue)
14
+ @job_queue = job_queue
17
15
  end
18
16
 
19
17
  def run
@@ -34,7 +32,7 @@ module Barbeque
34
32
  private
35
33
 
36
34
  def message_queue
37
- @message_queue ||= MessageQueue.new(@queue_name)
35
+ @message_queue ||= MessageQueue.new(@job_queue)
38
36
  end
39
37
 
40
38
  def keep_maximum_concurrent_executions
@@ -45,7 +43,7 @@ module Barbeque
45
43
  end
46
44
 
47
45
  loop do
48
- current_num = Barbeque::JobExecution.where(status: [:running, :retried]).count
46
+ current_num = @job_queue.job_executions.where(status: [:running, :retried]).count
49
47
  if current_num < max_num
50
48
  return
51
49
  end
@@ -1,3 +1,3 @@
1
1
  module Barbeque
2
- VERSION = '2.1.0'
2
+ VERSION = '2.2.0'
3
3
  end
@@ -6,6 +6,8 @@ require 'serverengine'
6
6
 
7
7
  module Barbeque
8
8
  module Worker
9
+ DEFAULT_QUEUE = ENV['BARBEQUE_DEFAULT_QUEUE'] || 'default'
10
+
9
11
  class UnexpectedMessageType < StandardError; end
10
12
 
11
13
  def self.run(
@@ -32,14 +34,17 @@ module Barbeque
32
34
  end
33
35
 
34
36
  def initialize
37
+ queue_name = ENV['BARBEQUE_QUEUE'] || DEFAULT_QUEUE
38
+ queue = Barbeque::JobQueue.find_by!(name: queue_name)
39
+
35
40
  @command =
36
41
  case worker_id
37
42
  when 0
38
- ExecutionPoller.new
43
+ ExecutionPoller.new(queue)
39
44
  when 1
40
- RetryPoller.new
45
+ RetryPoller.new(queue)
41
46
  else
42
- Runner.new
47
+ Runner.new(queue)
43
48
  end
44
49
  end
45
50
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: barbeque
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takashi Kokubun
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-22 00:00:00.000000000 Z
11
+ date: 2018-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: adminlte2-rails
@@ -263,7 +263,7 @@ dependencies:
263
263
  - !ruby/object:Gem::Version
264
264
  version: '0'
265
265
  - !ruby/object:Gem::Dependency
266
- name: factory_girl_rails
266
+ name: factory_bot_rails
267
267
  requirement: !ruby/object:Gem::Requirement
268
268
  requirements:
269
269
  - - ">="
@@ -470,7 +470,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
470
470
  version: '0'
471
471
  requirements: []
472
472
  rubyforge_project:
473
- rubygems_version: 2.7.3
473
+ rubygems_version: 2.7.6
474
474
  signing_key:
475
475
  specification_version: 4
476
476
  summary: Job queue system to run job with Docker