sidekiq-worker-killer 0.2.1 → 0.3.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
  SHA1:
3
- metadata.gz: 4be8fc2573572f8428c331dc1ea372c951898f13
4
- data.tar.gz: cc93aa9658b9becb22c499aaf6d73a8b24629aaa
3
+ metadata.gz: 4269c4f6da1a1eff0beed38c5ced2f6fca035b83
4
+ data.tar.gz: 9d9fb7cb1bf97982dfb489ab5a397b06930c0620
5
5
  SHA512:
6
- metadata.gz: 62f4ed8ef018035f1688aa4f90ac92bab7127814ebed837ef51b4743be6966bb1f59c87df05dc73d0bfe0a2d882c9aa3ef024a35b84e126165ef8f71b3816b71
7
- data.tar.gz: 2852845d75c163bd682dd1bf073040bd620c68d871eaddb5cb818dfe3cc2e39aa0532264b223572d59c23cbbe804ba06d38770e941fec4e6bd809b9854931b03
6
+ metadata.gz: 716ea8ce12527e8653f0bc08c9cc16acc428917340907a9701e2e45d8f3996a157dacc634a96d0db74db3dfa949ba8ffb0377391837942df5d343d5b1870463f
7
+ data.tar.gz: 0f04a39f3ac416f231e7b075a34ce827f4c435183e1b2277d50ce1fb4392b66a7ddcef59c60d4c0e1392ac34c572849501624d8be642b3cb76495562ebd85cd5
data/README.md CHANGED
@@ -32,7 +32,7 @@ The following options can be overrided.
32
32
  | Option | Defaults | Description |
33
33
  | ------- | ------- | ----------- |
34
34
  | max_rss | 0 MB (disabled) | max RSS in megabytes. Above this, shutdown will be triggered. |
35
- | grace_time | 900 seconds | when shutdown is triggered, the Sidekiq process will not accept new job but wait 15 minutes for running jobs to finish. |
35
+ | grace_time | 900 seconds | when shutdown is triggered, the Sidekiq process will not accept new job and wait at most 15 minutes for running jobs to finish. |
36
36
  | shutdown_wait | 30 seconds | when the grace time expires, still running jobs get 30 seconds to terminate. After that, kill signal is triggered. |
37
37
  | kill_signal | SIGKILL | Signal to use kill Sidekiq process if it doesn't terminate. |
38
38
 
@@ -21,6 +21,8 @@ module Sidekiq
21
21
  yield
22
22
  # Skip if the max RSS is not exceeded
23
23
  return unless @max_rss > 0 && current_rss > @max_rss
24
+ GC.start(full_mark: true, immediate_sweep: true)
25
+ return unless @max_rss > 0 && current_rss > @max_rss
24
26
  # Launch the shutdown process
25
27
  warn "current RSS #{current_rss} of #{identity} exceeds " \
26
28
  "maximum RSS #{@max_rss}"
@@ -43,7 +45,7 @@ module Sidekiq
43
45
  signal(quiet_signal, pid)
44
46
 
45
47
  warn "shutting down #{identity} in #{@grace_time} seconds"
46
- sleep(@grace_time)
48
+ wait_job_finish_in_grace_time
47
49
 
48
50
  warn "sending SIGTERM to #{identity}"
49
51
  signal("SIGTERM", pid)
@@ -56,6 +58,21 @@ module Sidekiq
56
58
  signal(@kill_signal, pid)
57
59
  end
58
60
 
61
+ def wait_job_finish_in_grace_time
62
+ start = Time.now
63
+ loop do
64
+ break if start + @grace_time < Time.now || no_jobs_on_quiet_processes?
65
+ sleep(1)
66
+ end
67
+ end
68
+
69
+ def no_jobs_on_quiet_processes?
70
+ Sidekiq::ProcessSet.new.each do |process|
71
+ return false if !process["busy"].zero? && process["quiet"]
72
+ end
73
+ true
74
+ end
75
+
59
76
  def current_rss
60
77
  ::GetProcessMem.new.mb
61
78
  end
@@ -1,5 +1,5 @@
1
1
  module Sidekiq
2
2
  class WorkerKiller
3
- VERSION = "0.2.1".freeze
3
+ VERSION = "0.3.0".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-worker-killer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyrille Courtiere
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-13 00:00:00.000000000 Z
11
+ date: 2018-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: get_process_mem
@@ -97,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
97
  version: '0'
98
98
  requirements: []
99
99
  rubyforge_project:
100
- rubygems_version: 2.6.14
100
+ rubygems_version: 2.5.2.3
101
101
  signing_key:
102
102
  specification_version: 4
103
103
  summary: Sidekiq worker killer