resque-heroku-signals 2.4.0 → 2.5.0.1

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: bd617d3ef284ea60150b8b8be9afd02c1940c874e1ed1d50c7eea8df8e5acb08
4
- data.tar.gz: 92ddf20276dfd1cc6494cea3cf6b5bc203d3b078f2768b66005308db94c0b679
3
+ metadata.gz: 62ff5405f78d9e6ad1be2a2807541180adb14ead8924102cc54cefe3d6a0a898
4
+ data.tar.gz: defed1cc3cd6016402502aab6c53f8e4a610bfc9e6f8c6e17ce3241f57fe7330
5
5
  SHA512:
6
- metadata.gz: e5830ae5b15b878641d2c5c61ac5625c85cc715f7f7e8d39eca270113f8114871ec9ad3a5ec1a7be7137381d0e300c0927df2a07be79a69a664dc7c01100afa5
7
- data.tar.gz: 61751f5cd0ebf894d4fc7804093ffba5bd6b69a337f01120cac996c11f5c6f79a335d99a126b36bbb5be5bf6cb56c612298bea6e60073622d8a07914370b0cb4
6
+ metadata.gz: 703923f42deee729bd04abdb26bbde32a55a6f098007be6b2959c624eb47f9d172d48a3bb9101590df0203c6849fe4a844a5ff274b6594f63cffaaf0fba1f90f
7
+ data.tar.gz: e3bb87939927ebdb2511f7b44e32f6669d2abe5d39ae9c660e8991fd88e0a4549d87f156e0bed4453f64e93ddace4dd01491609393f49f78dada7224640ce9bc
@@ -10,7 +10,7 @@ jobs:
10
10
  - 6379:6379
11
11
  strategy:
12
12
  matrix:
13
- ruby-version: ['3.0', '2.7']
13
+ ruby-version: ['3.2', '3.1', '3.0', '2.7']
14
14
 
15
15
  steps:
16
16
  - uses: actions/checkout@v3
@@ -12,24 +12,43 @@ end
12
12
  # https://github.com/resque/resque/blame/v2.0.0/lib/resque/worker.rb#L406
13
13
  # https://github.com/resque/resque/issues/1559#issuecomment-310908574
14
14
  Resque::Worker.class_eval do
15
- def unregister_signal_handlers
16
- trap('TERM') do
17
- $HEROKU_WILL_TERMINATE_RESQUE = true
15
+ # In this patched implementation, the only change is that the worker sends
16
+ # SIGINT to the child, the rest is copied verbatim.
17
+ def new_kill_child
18
+ if @child
19
+ unless child_already_exited?
20
+ if pre_shutdown_timeout && pre_shutdown_timeout > 0.0
21
+ log_with_severity :debug, "Waiting #{pre_shutdown_timeout.to_f}s for child process to exit"
22
+ return if wait_for_child_exit(pre_shutdown_timeout)
23
+ end
18
24
 
19
- trap('TERM') do
20
- log_with_severity :info, "[resque-heroku] received second term signal, throwing term exception"
25
+ log_with_severity :debug, "Sending INT signal to child #{@child}"
26
+ Process.kill("INT", @child)
21
27
 
22
- trap('TERM') do
23
- log_with_severity :info, "[resque-heroku] third or more time receiving TERM, ignoring"
28
+ if wait_for_child_exit(term_timeout)
29
+ return
30
+ else
31
+ log_with_severity :debug, "Sending KILL signal to child #{@child}"
32
+ Process.kill("KILL", @child)
24
33
  end
25
-
26
- raise Resque::TermException.new("SIGTERM")
34
+ else
35
+ log_with_severity :debug, "Child #{@child} already quit."
27
36
  end
37
+ end
38
+ rescue SystemCallError
39
+ log_with_severity :error, "Child #{@child} already quit and reaped."
40
+ end
28
41
 
29
- log_with_severity :info, "[resque-heroku] received first term signal from heroku, ignoring"
42
+ def unregister_signal_handlers
43
+ trap("TERM") do
44
+ log_with_severity :debug, "Got TERM signal from Heroku."
45
+ $HEROKU_WILL_TERMINATE_RESQUE = true
30
46
  end
31
47
 
32
- trap('INT', 'DEFAULT')
48
+ trap("INT") do
49
+ log_with_severity :debug, "Got INT signal from the worker."
50
+ raise Resque::TermException.new("SIGINT")
51
+ end
33
52
 
34
53
  begin
35
54
  trap('QUIT', 'DEFAULT')
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "resque-heroku-signals"
7
- spec.version = '2.4.0'
7
+ spec.version = '2.5.0.1'
8
8
  spec.authors = ["Michael Bianco"]
9
9
  spec.email = ["mike@mikebian.co"]
10
10
 
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.metadata['rubygems_mfa_required'] = 'true'
23
23
 
24
24
  # strict resque dependency is intentional
25
- spec.add_dependency "resque", "2.4.0"
25
+ spec.add_dependency "resque", "2.5.0"
26
26
 
27
27
  spec.add_development_dependency "bundler", "~> 2.2"
28
28
  spec.add_development_dependency "rake", "~> 13.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resque-heroku-signals
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.5.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Bianco
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-09-06 00:00:00.000000000 Z
11
+ date: 2023-05-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: resque
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 2.4.0
19
+ version: 2.5.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 2.4.0
26
+ version: 2.5.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -66,7 +66,7 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '3.10'
69
- description:
69
+ description:
70
70
  email:
71
71
  - mike@mikebian.co
72
72
  executables: []
@@ -92,7 +92,7 @@ licenses:
92
92
  - MIT
93
93
  metadata:
94
94
  rubygems_mfa_required: 'true'
95
- post_install_message:
95
+ post_install_message:
96
96
  rdoc_options: []
97
97
  require_paths:
98
98
  - lib
@@ -107,8 +107,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
107
  - !ruby/object:Gem::Version
108
108
  version: '0'
109
109
  requirements: []
110
- rubygems_version: 3.3.5
111
- signing_key:
110
+ rubygems_version: 3.4.1
111
+ signing_key:
112
112
  specification_version: 4
113
113
  summary: Patch resque to be compatible with Heroku
114
114
  test_files: []