inst-jobs-autoscaling 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: efcf74bf8abbe54c72b3c0dd351d77a51fdf0b6d25531a24e7c61373e84af463
4
- data.tar.gz: 1c11f52c6cc56fd24ead4924833da2f6b0bc49ac44bbb012dc7b37eed5907e13
3
+ metadata.gz: f7d2f6a38d87a869c628fcf44743f6f6921cf4eeab7a2f4efb531d884efe8b97
4
+ data.tar.gz: a3fbda486e7586ec36d539e27bf6be30239c8ac96106553e20ca15cbdf88daff
5
5
  SHA512:
6
- metadata.gz: 74e7134aa35913a1bf2c2eb4eb90b7ee49943757190fd79574ff511743d212bcf8eff07a9f168e99504e9896cbd1de33868dfcf2808a10e668dd3d808a20e97c
7
- data.tar.gz: a3ed4e6c271e5278fefe62d694f884d436458ba574efc64efca30ddbc978a8fb17c108fc230f7398a6f882d40f2e813639c05ccc0a30432fc86299e22c45dbca
6
+ metadata.gz: 1f60ef4e60f881b61d1325735884e248dce4a252e9f2d985b451c0bb3b934af0627a4665f78e72de448788cbbaadd9d9cd2d5edd0d4f33fa24c845fc684094f7
7
+ data.tar.gz: 4a15b8ee2fc114b5f7541f8cde0d0211f471a9634eafb4f37449f47709cc457f3bf4ac7061714796d1c70c1c9bb529734940f216c705ce8e8cb467fcf1305e17
@@ -11,17 +11,35 @@ module JobsAutoscaling
11
11
 
12
12
  def activate!
13
13
  Delayed::Worker.lifecycle.after(:work_queue_pop, &method(:work_queue_pop))
14
- change_state(IDLE)
14
+ load_preexisting_jobs
15
+ change_state(preexisting_jobs_running? ? BUSY : IDLE)
15
16
  end
16
17
 
17
18
  protected
18
19
 
20
+ def load_preexisting_jobs
21
+ @process_mtime_map = {}
22
+ Delayed::Job.processes_locked_locally.each do |pid|
23
+ mtime = Delayed::Worker::ProcessHelper.mtime(pid)
24
+ @process_mtime_map[pid] = mtime if mtime
25
+ end
26
+ end
27
+
28
+ def preexisting_jobs_running?
29
+ @process_mtime_map.each do |pid, mtime|
30
+ unless Delayed::Worker::ProcessHelper.process_is_still_running?(pid, mtime)
31
+ @process_mtime_map.delete(pid)
32
+ end
33
+ end
34
+ @process_mtime_map.any?
35
+ end
36
+
19
37
  def work_queue_pop(work_queue, _worker_config)
20
38
  unless work_queue.respond_to?(:all_workers_idle?)
21
39
  return
22
40
  end
23
41
 
24
- new_state = work_queue.all_workers_idle? ? IDLE : BUSY
42
+ new_state = work_queue.all_workers_idle? && !preexisting_jobs_running? ? IDLE : BUSY
25
43
  if new_state != @worker_state
26
44
  change_state(new_state)
27
45
  end
@@ -1,3 +1,3 @@
1
1
  module JobsAutoscaling
2
- VERSION = "1.0.3"
2
+ VERSION = "1.0.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inst-jobs-autoscaling
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Palmer
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-05-09 00:00:00.000000000 Z
11
+ date: 2018-06-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: inst-jobs
@@ -138,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
138
  version: '0'
139
139
  requirements: []
140
140
  rubyforge_project:
141
- rubygems_version: 2.7.6
141
+ rubygems_version: 2.7.3
142
142
  signing_key:
143
143
  specification_version: 4
144
144
  summary: AWS ASG autoscaling for inst-jobs