sidekiq 5.0.0 → 6.0.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of sidekiq might be problematic. Click here for more details.
- checksums.yaml +5 -5
- data/.circleci/config.yml +61 -0
- data/.github/issue_template.md +3 -1
- data/.gitignore +1 -1
- data/.standard.yml +20 -0
- data/6.0-Upgrade.md +70 -0
- data/COMM-LICENSE +12 -10
- data/Changes.md +169 -1
- data/Ent-2.0-Upgrade.md +37 -0
- data/Ent-Changes.md +76 -0
- data/Gemfile +16 -21
- data/Gemfile.lock +196 -0
- data/LICENSE +1 -1
- data/Pro-4.0-Upgrade.md +35 -0
- data/Pro-5.0-Upgrade.md +25 -0
- data/Pro-Changes.md +137 -1
- data/README.md +18 -30
- data/Rakefile +6 -8
- data/bin/sidekiqload +28 -24
- data/bin/sidekiqmon +9 -0
- data/lib/generators/sidekiq/templates/worker_spec.rb.erb +1 -1
- data/lib/generators/sidekiq/templates/worker_test.rb.erb +1 -1
- data/lib/generators/sidekiq/worker_generator.rb +12 -14
- data/lib/sidekiq.rb +69 -49
- data/lib/sidekiq/api.rb +216 -160
- data/lib/sidekiq/cli.rb +174 -207
- data/lib/sidekiq/client.rb +55 -51
- data/lib/sidekiq/delay.rb +24 -4
- data/lib/sidekiq/exception_handler.rb +12 -16
- data/lib/sidekiq/extensions/action_mailer.rb +10 -20
- data/lib/sidekiq/extensions/active_record.rb +9 -7
- data/lib/sidekiq/extensions/class_methods.rb +9 -7
- data/lib/sidekiq/extensions/generic_proxy.rb +4 -4
- data/lib/sidekiq/fetch.rb +5 -6
- data/lib/sidekiq/job_logger.rb +42 -14
- data/lib/sidekiq/job_retry.rb +71 -57
- data/lib/sidekiq/launcher.rb +74 -60
- data/lib/sidekiq/logger.rb +69 -0
- data/lib/sidekiq/manager.rb +12 -15
- data/lib/sidekiq/middleware/chain.rb +3 -2
- data/lib/sidekiq/middleware/i18n.rb +5 -7
- data/lib/sidekiq/monitor.rb +148 -0
- data/lib/sidekiq/paginator.rb +11 -12
- data/lib/sidekiq/processor.rb +126 -82
- data/lib/sidekiq/rails.rb +24 -32
- data/lib/sidekiq/redis_connection.rb +46 -14
- data/lib/sidekiq/scheduled.rb +50 -25
- data/lib/sidekiq/testing.rb +35 -27
- data/lib/sidekiq/testing/inline.rb +2 -1
- data/lib/sidekiq/util.rb +20 -14
- data/lib/sidekiq/version.rb +2 -1
- data/lib/sidekiq/web.rb +45 -53
- data/lib/sidekiq/web/action.rb +14 -10
- data/lib/sidekiq/web/application.rb +83 -58
- data/lib/sidekiq/web/helpers.rb +105 -67
- data/lib/sidekiq/web/router.rb +18 -15
- data/lib/sidekiq/worker.rb +144 -41
- data/sidekiq.gemspec +16 -27
- data/web/assets/javascripts/application.js +0 -0
- data/web/assets/javascripts/dashboard.js +21 -23
- data/web/assets/stylesheets/application.css +35 -2
- data/web/assets/stylesheets/bootstrap.css +2 -2
- data/web/locales/ar.yml +1 -0
- data/web/locales/en.yml +2 -0
- data/web/locales/es.yml +4 -3
- data/web/locales/ja.yml +7 -4
- data/web/views/_footer.erb +4 -1
- data/web/views/_nav.erb +3 -17
- data/web/views/busy.erb +5 -1
- data/web/views/layout.erb +1 -1
- data/web/views/queue.erb +1 -0
- data/web/views/queues.erb +2 -0
- data/web/views/retries.erb +4 -0
- metadata +25 -171
- data/.travis.yml +0 -18
- data/bin/sidekiqctl +0 -99
- data/lib/sidekiq/core_ext.rb +0 -119
- data/lib/sidekiq/logging.rb +0 -106
- data/lib/sidekiq/middleware/server/active_record.rb +0 -22
data/web/views/queues.erb
CHANGED
@@ -5,6 +5,7 @@
|
|
5
5
|
<thead>
|
6
6
|
<th><%= t('Queue') %></th>
|
7
7
|
<th><%= t('Size') %></th>
|
8
|
+
<th><%= t('Latency') %></th>
|
8
9
|
<th><%= t('Actions') %></th>
|
9
10
|
</thead>
|
10
11
|
<% @queues.each do |queue| %>
|
@@ -16,6 +17,7 @@
|
|
16
17
|
<% end %>
|
17
18
|
</td>
|
18
19
|
<td><%= number_with_delimiter(queue.size) %> </td>
|
20
|
+
<td><% queue_latency = queue.latency %><%= number_with_delimiter(queue_latency.round(2)) %><%= (queue_latency < 60) ? '' : " (#{relative_time(Time.at(Time.now.to_f - queue_latency))})" %> </td>
|
19
21
|
<td class="delete-confirm">
|
20
22
|
<form action="<%=root_path %>queues/<%= CGI.escape(queue.name) %>" method="post">
|
21
23
|
<%= csrf_tag %>
|
data/web/views/retries.erb
CHANGED
@@ -69,6 +69,10 @@
|
|
69
69
|
<%= csrf_tag %>
|
70
70
|
<input class="btn btn-danger btn-xs pull-right flip" type="submit" name="retry" value="<%= t('RetryAll') %>" data-confirm="<%= t('AreYouSure') %>" />
|
71
71
|
</form>
|
72
|
+
<form action="<%= root_path %>retries/all/kill" method="post">
|
73
|
+
<%= csrf_tag %>
|
74
|
+
<input class="btn btn-danger btn-xs pull-right flip" type="submit" name="kill" value="<%= t('KillAll') %>" data-confirm="<%= t('AreYouSure') %>" />
|
75
|
+
</form>
|
72
76
|
<% end %>
|
73
77
|
|
74
78
|
<% else %>
|
metadata
CHANGED
@@ -1,250 +1,105 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 6.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Perham
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-08-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '3.3'
|
20
17
|
- - ">="
|
21
18
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
19
|
+
version: 4.1.0
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
|
-
- - "~>"
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '3.3'
|
30
24
|
- - ">="
|
31
25
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
26
|
+
version: 4.1.0
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
28
|
name: connection_pool
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
36
30
|
requirements:
|
37
|
-
- - "~>"
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: '2.2'
|
40
31
|
- - ">="
|
41
32
|
- !ruby/object:Gem::Version
|
42
|
-
version: 2.2.
|
33
|
+
version: 2.2.2
|
43
34
|
type: :runtime
|
44
35
|
prerelease: false
|
45
36
|
version_requirements: !ruby/object:Gem::Requirement
|
46
37
|
requirements:
|
47
|
-
- - "~>"
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: '2.2'
|
50
38
|
- - ">="
|
51
39
|
- !ruby/object:Gem::Version
|
52
|
-
version: 2.2.
|
40
|
+
version: 2.2.2
|
53
41
|
- !ruby/object:Gem::Dependency
|
54
|
-
name:
|
55
|
-
requirement: !ruby/object:Gem::Requirement
|
56
|
-
requirements:
|
57
|
-
- - "~>"
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
version: '1.0'
|
60
|
-
type: :runtime
|
61
|
-
prerelease: false
|
62
|
-
version_requirements: !ruby/object:Gem::Requirement
|
63
|
-
requirements:
|
64
|
-
- - "~>"
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: '1.0'
|
67
|
-
- !ruby/object:Gem::Dependency
|
68
|
-
name: rack-protection
|
42
|
+
name: rack
|
69
43
|
requirement: !ruby/object:Gem::Requirement
|
70
44
|
requirements:
|
71
45
|
- - ">="
|
72
46
|
- !ruby/object:Gem::Version
|
73
|
-
version:
|
47
|
+
version: 2.0.0
|
74
48
|
type: :runtime
|
75
49
|
prerelease: false
|
76
50
|
version_requirements: !ruby/object:Gem::Requirement
|
77
51
|
requirements:
|
78
52
|
- - ">="
|
79
53
|
- !ruby/object:Gem::Version
|
80
|
-
version:
|
54
|
+
version: 2.0.0
|
81
55
|
- !ruby/object:Gem::Dependency
|
82
|
-
name:
|
83
|
-
requirement: !ruby/object:Gem::Requirement
|
84
|
-
requirements:
|
85
|
-
- - "~>"
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
version: '1.5'
|
88
|
-
- - ">="
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
version: 1.5.2
|
91
|
-
type: :development
|
92
|
-
prerelease: false
|
93
|
-
version_requirements: !ruby/object:Gem::Requirement
|
94
|
-
requirements:
|
95
|
-
- - "~>"
|
96
|
-
- !ruby/object:Gem::Version
|
97
|
-
version: '1.5'
|
98
|
-
- - ">="
|
99
|
-
- !ruby/object:Gem::Version
|
100
|
-
version: 1.5.2
|
101
|
-
- !ruby/object:Gem::Dependency
|
102
|
-
name: minitest
|
103
|
-
requirement: !ruby/object:Gem::Requirement
|
104
|
-
requirements:
|
105
|
-
- - "~>"
|
106
|
-
- !ruby/object:Gem::Version
|
107
|
-
version: '5.10'
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: 5.10.1
|
111
|
-
type: :development
|
112
|
-
prerelease: false
|
113
|
-
version_requirements: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - "~>"
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '5.10'
|
118
|
-
- - ">="
|
119
|
-
- !ruby/object:Gem::Version
|
120
|
-
version: 5.10.1
|
121
|
-
- !ruby/object:Gem::Dependency
|
122
|
-
name: rake
|
123
|
-
requirement: !ruby/object:Gem::Requirement
|
124
|
-
requirements:
|
125
|
-
- - "~>"
|
126
|
-
- !ruby/object:Gem::Version
|
127
|
-
version: '10.0'
|
128
|
-
type: :development
|
129
|
-
prerelease: false
|
130
|
-
version_requirements: !ruby/object:Gem::Requirement
|
131
|
-
requirements:
|
132
|
-
- - "~>"
|
133
|
-
- !ruby/object:Gem::Version
|
134
|
-
version: '10.0'
|
135
|
-
- !ruby/object:Gem::Dependency
|
136
|
-
name: rails
|
56
|
+
name: rack-protection
|
137
57
|
requirement: !ruby/object:Gem::Requirement
|
138
58
|
requirements:
|
139
59
|
- - ">="
|
140
60
|
- !ruby/object:Gem::Version
|
141
|
-
version:
|
142
|
-
type: :
|
61
|
+
version: 2.0.0
|
62
|
+
type: :runtime
|
143
63
|
prerelease: false
|
144
64
|
version_requirements: !ruby/object:Gem::Requirement
|
145
65
|
requirements:
|
146
66
|
- - ">="
|
147
67
|
- !ruby/object:Gem::Version
|
148
|
-
version:
|
149
|
-
- !ruby/object:Gem::Dependency
|
150
|
-
name: capybara
|
151
|
-
requirement: !ruby/object:Gem::Requirement
|
152
|
-
requirements:
|
153
|
-
- - "~>"
|
154
|
-
- !ruby/object:Gem::Version
|
155
|
-
version: '2.11'
|
156
|
-
type: :development
|
157
|
-
prerelease: false
|
158
|
-
version_requirements: !ruby/object:Gem::Requirement
|
159
|
-
requirements:
|
160
|
-
- - "~>"
|
161
|
-
- !ruby/object:Gem::Version
|
162
|
-
version: '2.11'
|
163
|
-
- !ruby/object:Gem::Dependency
|
164
|
-
name: poltergeist
|
165
|
-
requirement: !ruby/object:Gem::Requirement
|
166
|
-
requirements:
|
167
|
-
- - "~>"
|
168
|
-
- !ruby/object:Gem::Version
|
169
|
-
version: '1.12'
|
170
|
-
type: :development
|
171
|
-
prerelease: false
|
172
|
-
version_requirements: !ruby/object:Gem::Requirement
|
173
|
-
requirements:
|
174
|
-
- - "~>"
|
175
|
-
- !ruby/object:Gem::Version
|
176
|
-
version: '1.12'
|
177
|
-
- !ruby/object:Gem::Dependency
|
178
|
-
name: percy-capybara
|
179
|
-
requirement: !ruby/object:Gem::Requirement
|
180
|
-
requirements:
|
181
|
-
- - "~>"
|
182
|
-
- !ruby/object:Gem::Version
|
183
|
-
version: '2.3'
|
184
|
-
type: :development
|
185
|
-
prerelease: false
|
186
|
-
version_requirements: !ruby/object:Gem::Requirement
|
187
|
-
requirements:
|
188
|
-
- - "~>"
|
189
|
-
- !ruby/object:Gem::Version
|
190
|
-
version: '2.3'
|
191
|
-
- !ruby/object:Gem::Dependency
|
192
|
-
name: timecop
|
193
|
-
requirement: !ruby/object:Gem::Requirement
|
194
|
-
requirements:
|
195
|
-
- - "~>"
|
196
|
-
- !ruby/object:Gem::Version
|
197
|
-
version: '0.8'
|
198
|
-
type: :development
|
199
|
-
prerelease: false
|
200
|
-
version_requirements: !ruby/object:Gem::Requirement
|
201
|
-
requirements:
|
202
|
-
- - "~>"
|
203
|
-
- !ruby/object:Gem::Version
|
204
|
-
version: '0.8'
|
205
|
-
- !ruby/object:Gem::Dependency
|
206
|
-
name: mocha
|
207
|
-
requirement: !ruby/object:Gem::Requirement
|
208
|
-
requirements:
|
209
|
-
- - "~>"
|
210
|
-
- !ruby/object:Gem::Version
|
211
|
-
version: '1.1'
|
212
|
-
type: :development
|
213
|
-
prerelease: false
|
214
|
-
version_requirements: !ruby/object:Gem::Requirement
|
215
|
-
requirements:
|
216
|
-
- - "~>"
|
217
|
-
- !ruby/object:Gem::Version
|
218
|
-
version: '1.1'
|
68
|
+
version: 2.0.0
|
219
69
|
description: Simple, efficient background processing for Ruby.
|
220
70
|
email:
|
221
71
|
- mperham@gmail.com
|
222
72
|
executables:
|
223
73
|
- sidekiq
|
224
|
-
- sidekiqctl
|
225
74
|
extensions: []
|
226
75
|
extra_rdoc_files: []
|
227
76
|
files:
|
77
|
+
- ".circleci/config.yml"
|
228
78
|
- ".github/contributing.md"
|
229
79
|
- ".github/issue_template.md"
|
230
80
|
- ".gitignore"
|
231
|
-
- ".
|
81
|
+
- ".standard.yml"
|
232
82
|
- 3.0-Upgrade.md
|
233
83
|
- 4.0-Upgrade.md
|
234
84
|
- 5.0-Upgrade.md
|
85
|
+
- 6.0-Upgrade.md
|
235
86
|
- COMM-LICENSE
|
236
87
|
- Changes.md
|
88
|
+
- Ent-2.0-Upgrade.md
|
237
89
|
- Ent-Changes.md
|
238
90
|
- Gemfile
|
91
|
+
- Gemfile.lock
|
239
92
|
- LICENSE
|
240
93
|
- Pro-2.0-Upgrade.md
|
241
94
|
- Pro-3.0-Upgrade.md
|
95
|
+
- Pro-4.0-Upgrade.md
|
96
|
+
- Pro-5.0-Upgrade.md
|
242
97
|
- Pro-Changes.md
|
243
98
|
- README.md
|
244
99
|
- Rakefile
|
245
100
|
- bin/sidekiq
|
246
|
-
- bin/sidekiqctl
|
247
101
|
- bin/sidekiqload
|
102
|
+
- bin/sidekiqmon
|
248
103
|
- code_of_conduct.md
|
249
104
|
- lib/generators/sidekiq/templates/worker.rb.erb
|
250
105
|
- lib/generators/sidekiq/templates/worker_spec.rb.erb
|
@@ -254,7 +109,6 @@ files:
|
|
254
109
|
- lib/sidekiq/api.rb
|
255
110
|
- lib/sidekiq/cli.rb
|
256
111
|
- lib/sidekiq/client.rb
|
257
|
-
- lib/sidekiq/core_ext.rb
|
258
112
|
- lib/sidekiq/delay.rb
|
259
113
|
- lib/sidekiq/exception_handler.rb
|
260
114
|
- lib/sidekiq/extensions/action_mailer.rb
|
@@ -265,11 +119,11 @@ files:
|
|
265
119
|
- lib/sidekiq/job_logger.rb
|
266
120
|
- lib/sidekiq/job_retry.rb
|
267
121
|
- lib/sidekiq/launcher.rb
|
268
|
-
- lib/sidekiq/
|
122
|
+
- lib/sidekiq/logger.rb
|
269
123
|
- lib/sidekiq/manager.rb
|
270
124
|
- lib/sidekiq/middleware/chain.rb
|
271
125
|
- lib/sidekiq/middleware/i18n.rb
|
272
|
-
- lib/sidekiq/
|
126
|
+
- lib/sidekiq/monitor.rb
|
273
127
|
- lib/sidekiq/paginator.rb
|
274
128
|
- lib/sidekiq/processor.rb
|
275
129
|
- lib/sidekiq/rails.rb
|
@@ -351,7 +205,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
351
205
|
requirements:
|
352
206
|
- - ">="
|
353
207
|
- !ruby/object:Gem::Version
|
354
|
-
version:
|
208
|
+
version: 2.5.0
|
355
209
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
356
210
|
requirements:
|
357
211
|
- - ">="
|
@@ -359,7 +213,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
359
213
|
version: '0'
|
360
214
|
requirements: []
|
361
215
|
rubyforge_project:
|
362
|
-
rubygems_version: 2.
|
216
|
+
rubygems_version: 2.7.6
|
363
217
|
signing_key:
|
364
218
|
specification_version: 4
|
365
219
|
summary: Simple, efficient background processing for Ruby
|
data/.travis.yml
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
sudo: false
|
3
|
-
cache: bundler
|
4
|
-
services:
|
5
|
-
- redis-server
|
6
|
-
before_install:
|
7
|
-
- gem install bundler
|
8
|
-
- gem update bundler
|
9
|
-
matrix:
|
10
|
-
include:
|
11
|
-
- rvm: 2.2.4
|
12
|
-
env: "PERCY_ENABLE=0"
|
13
|
-
- rvm: 2.3.0
|
14
|
-
env: "PERCY_ENABLE=0"
|
15
|
-
- rvm: 2.4.0
|
16
|
-
env: "PERCY_ENABLE=1"
|
17
|
-
- rvm: jruby-9.1.6.0
|
18
|
-
env: "PERCY_ENABLE=0"
|
data/bin/sidekiqctl
DELETED
@@ -1,99 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'fileutils'
|
4
|
-
|
5
|
-
class Sidekiqctl
|
6
|
-
DEFAULT_KILL_TIMEOUT = 10
|
7
|
-
|
8
|
-
attr_reader :stage, :pidfile, :kill_timeout
|
9
|
-
|
10
|
-
def self.print_usage
|
11
|
-
puts "#{File.basename($0)} - stop a Sidekiq process from the command line."
|
12
|
-
puts
|
13
|
-
puts "Usage: #{File.basename($0)} <command> <pidfile> <kill_timeout>"
|
14
|
-
puts " where <command> is either 'quiet' or 'stop'"
|
15
|
-
puts " <pidfile> is path to a pidfile"
|
16
|
-
puts " <kill_timeout> is number of seconds to wait until Sidekiq exits"
|
17
|
-
puts " (default: #{Sidekiqctl::DEFAULT_KILL_TIMEOUT}), after which Sidekiq will be KILL'd"
|
18
|
-
puts
|
19
|
-
puts "Be sure to set the kill_timeout LONGER than Sidekiq's -t timeout. If you want"
|
20
|
-
puts "to wait 60 seconds for jobs to finish, use `sidekiq -t 60` and `sidekiqctl stop"
|
21
|
-
puts " path_to_pidfile 61`"
|
22
|
-
puts
|
23
|
-
end
|
24
|
-
|
25
|
-
def initialize(stage, pidfile, timeout)
|
26
|
-
@stage = stage
|
27
|
-
@pidfile = pidfile
|
28
|
-
@kill_timeout = timeout
|
29
|
-
|
30
|
-
done('No pidfile given', :error) if !pidfile
|
31
|
-
done("Pidfile #{pidfile} does not exist", :warn) if !File.exist?(pidfile)
|
32
|
-
done('Invalid pidfile content', :error) if pid == 0
|
33
|
-
|
34
|
-
fetch_process
|
35
|
-
|
36
|
-
begin
|
37
|
-
send(stage)
|
38
|
-
rescue NoMethodError
|
39
|
-
done "Invalid command: #{stage}", :error
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def fetch_process
|
44
|
-
Process.kill(0, pid)
|
45
|
-
rescue Errno::ESRCH
|
46
|
-
done "Process doesn't exist", :error
|
47
|
-
# We were not allowed to send a signal, but the process must have existed
|
48
|
-
# when Process.kill() was called.
|
49
|
-
rescue Errno::EPERM
|
50
|
-
return pid
|
51
|
-
end
|
52
|
-
|
53
|
-
def done(msg, error = nil)
|
54
|
-
puts msg
|
55
|
-
exit(exit_signal(error))
|
56
|
-
end
|
57
|
-
|
58
|
-
def exit_signal(error)
|
59
|
-
(error == :error) ? 1 : 0
|
60
|
-
end
|
61
|
-
|
62
|
-
def pid
|
63
|
-
@pid ||= File.read(pidfile).to_i
|
64
|
-
end
|
65
|
-
|
66
|
-
def quiet
|
67
|
-
`kill -TSTP #{pid}`
|
68
|
-
end
|
69
|
-
|
70
|
-
def stop
|
71
|
-
`kill -TERM #{pid}`
|
72
|
-
kill_timeout.times do
|
73
|
-
begin
|
74
|
-
Process.kill(0, pid)
|
75
|
-
rescue Errno::ESRCH
|
76
|
-
FileUtils.rm_f pidfile
|
77
|
-
done 'Sidekiq shut down gracefully.'
|
78
|
-
rescue Errno::EPERM
|
79
|
-
done 'Not permitted to shut down Sidekiq.'
|
80
|
-
end
|
81
|
-
sleep 1
|
82
|
-
end
|
83
|
-
`kill -9 #{pid}`
|
84
|
-
FileUtils.rm_f pidfile
|
85
|
-
done 'Sidekiq shut down forcefully.'
|
86
|
-
end
|
87
|
-
alias_method :shutdown, :stop
|
88
|
-
end
|
89
|
-
|
90
|
-
if ARGV.length < 2
|
91
|
-
Sidekiqctl.print_usage
|
92
|
-
else
|
93
|
-
stage = ARGV[0]
|
94
|
-
pidfile = ARGV[1]
|
95
|
-
timeout = ARGV[2].to_i
|
96
|
-
timeout = Sidekiqctl::DEFAULT_KILL_TIMEOUT if timeout == 0
|
97
|
-
|
98
|
-
Sidekiqctl.new(stage, pidfile, timeout)
|
99
|
-
end
|