resque-heroku-signals 2.5.0 → 2.6.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: 3fd0d2ff7c73bef401f2abd72465d542e9c8d3ec19dbde5f6f2aeede596f5c8e
4
- data.tar.gz: 0e3332150e08504abab3b7604fad850caf7bdbedf95ed93808e9c0efa8e95e40
3
+ metadata.gz: '084c40afbbe574362fe885154b1445197c593d7fada8332a1d5b544c57ec0350'
4
+ data.tar.gz: 39cb127ffa94809de2abb47cad2c1ea836f0d524dc3b3f9a7b1a7aafb8631add
5
5
  SHA512:
6
- metadata.gz: 1251aa0f48ab31cee2741c5b5eafeae7789b52a261bbc4469c51295f92d01e1128bd2f7a6eeb3d2cb3c309213bd2fd4c5a1deab84a0aeb062b66fe57e5f69dde
7
- data.tar.gz: 80319b8d09d046e50b56c59ae904c1e0835f9e87a50bad3fb1aece55382b87775a1b64c2c5c54b2a0ce257fcda8069a2c6e53bb10c07eb414098e3c32360bb4f
6
+ metadata.gz: 9c11a2d70a3c2f6cef8f0f593ffbf63e2cb683f49ada10c521c86a1dcde80956c7a3037ba401ce984d7d9b8b41e2b2d6e2348a56619d10af7a400b7ad61cb3d8
7
+ data.tar.gz: fe6f9b45760f34aeecd7f424d3a3b45d3150398781e552b34b3a576fe9c2b4ff1eba2bc7accc34963b801e2bb3e7cb40fdafb1985864109609f2e38132d5213f
@@ -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.5.0'
7
+ spec.version = '2.6.0'
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.5.0"
25
+ spec.add_dependency "resque", "2.6.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.5.0
4
+ version: 2.6.0
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: 2023-03-01 00:00:00.000000000 Z
11
+ date: 2023-08-19 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.5.0
19
+ version: 2.6.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.5.0
26
+ version: 2.6.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.4.1
111
- signing_key:
110
+ rubygems_version: 3.4.10
111
+ signing_key:
112
112
  specification_version: 4
113
113
  summary: Patch resque to be compatible with Heroku
114
114
  test_files: []