resqued 0.10.2 → 0.10.3

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: bc14cf354d4cd292119aa6e6f06f0c59dd09faf982fe10707e69c5bbb3ef56e4
4
- data.tar.gz: 7bad129217778e76f14c1dc6a732025d5cc0bba17baaee9d81ee5a1648768edc
3
+ metadata.gz: a96943adfc574c78c23d78e95aaeae7021c8f0d52ad823db5a39b70e19a3dc03
4
+ data.tar.gz: 8bbf849c80581ee3faedf6dda7a0a0ff673c56fe402fbdc0f8896689b51b74c0
5
5
  SHA512:
6
- metadata.gz: e8b5e943ec7612022b8a937c6a380b1d396be6cd2c5ebad13239961232c992dcce54d42e807c1d52f036f102defe4492f4fd498f0299c33e40e5095dc26ab48f
7
- data.tar.gz: a26e43be4a408d59d8db061c00b112e45a6fec8b6ba318e145cbac1e53b4087b12f9b2ba3510fa118714aeb8b0117673c90b6f7fb987ca028a8962c85f594e5f
6
+ metadata.gz: 2f07ccb1f95a61f283bbb2f12668a92dd8df5a4114d10f4f48b8b0ea825b916c54181e5efa64aded4b11798ad27677cf49b3c039ec6ef83f27cd07a520911ce6
7
+ data.tar.gz: 66703d00c84c7d010e6454c3bb9522efd499e57520e9e51d2dbfd769d1c2b795d8b1398d19e1283333db8057a804b5ce7d3b985bbe91bad3b2582e5126843692
data/CHANGES.md CHANGED
@@ -1,5 +1,9 @@
1
1
  Starting with version 0.6.1, resqued uses semantic versioning to indicate incompatibilities between the master process, listener process, and configuration.
2
2
 
3
+ v0.10.3
4
+ -------
5
+ * Fix a timing related crash during reload. (#60)
6
+
3
7
  v0.10.2
4
8
  -------
5
9
  * Shut down cleanly even if there are other stray child processes of the master. (#59)
@@ -200,7 +200,7 @@ module Resqued
200
200
  end
201
201
 
202
202
  if @listeners.last_good_pid == lpid
203
- @state.clear_last_good!
203
+ @listeners.clear_last_good!
204
204
  end
205
205
 
206
206
  if dead_listener = @listeners.delete(lpid)
@@ -1,3 +1,3 @@
1
1
  module Resqued
2
- VERSION = '0.10.2'
2
+ VERSION = '0.10.3'
3
3
  end
@@ -0,0 +1,23 @@
1
+ require "spec_helper"
2
+
3
+ describe "Listener still starting on SIGHUP" do
4
+ include ResquedIntegrationHelpers
5
+
6
+ it "expect master not to crash" do
7
+ start_resqued config: <<-CONFIG
8
+ before_fork do
9
+ sleep 1
10
+ end
11
+ CONFIG
12
+ expect_running listener: "listener #1"
13
+ restart_resqued
14
+ expect_running listener: "listener #2"
15
+ end
16
+
17
+ after do
18
+ begin
19
+ Process.kill(:QUIT, @pid) if @pid
20
+ rescue Errno::ESRCH
21
+ end
22
+ end
23
+ end
@@ -22,7 +22,7 @@ describe "Resqued master with an extra child process" do
22
22
  }
23
23
 
24
24
  pid = spawn(env, shim_path, resqued_path, "--logfile", logfile, config_path)
25
- sleep 1.0
25
+ sleep 2.0
26
26
  pid
27
27
  end
28
28
 
@@ -1,7 +1,7 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe "Resqued can restart" do
4
- include ResquedPath
4
+ include ResquedIntegrationHelpers
5
5
 
6
6
  it "expect to be able to restart" do
7
7
  start_resqued
@@ -18,46 +18,4 @@ describe "Resqued can restart" do
18
18
  rescue Errno::ESRCH
19
19
  end
20
20
  end
21
-
22
- def expect_running(listener:)
23
- processes = list_processes
24
- expect(processes).to include(is_resqued_master)
25
- listeners = processes.select { |p| p[:ppid] == @pid }.map { |p| p[:args] }
26
- expect(listeners).to all(match(/#{listener}/)).and(satisfy { |l| l.size == 1 })
27
- end
28
-
29
- def expect_not_running
30
- processes = list_processes
31
- expect(processes).not_to include(is_resqued_master)
32
- end
33
-
34
- def start_resqued
35
- # Don't configure any workers. That way, we don't need to have redis running.
36
- config_path = File.join(SPEC_TEMPDIR, "config.rb")
37
- File.write(config_path, "")
38
-
39
- logfile = File.join(SPEC_TEMPDIR, "resqued.log")
40
- File.write(logfile, "") # truncate it
41
-
42
- @pid = spawn resqued_path, "--logfile", logfile, config_path
43
- sleep 1.0
44
- end
45
-
46
- def restart_resqued
47
- Process.kill(:HUP, @pid)
48
- sleep 1.0
49
- end
50
-
51
- def stop_resqued
52
- Process.kill(:TERM, @pid)
53
- sleep 1.0
54
- end
55
-
56
- def list_processes
57
- `ps axo pid,ppid,args`.lines.map { |line| pid, ppid, args = line.strip.split(/\s+/, 3); { pid: pid.to_i, ppid: ppid.to_i, args: args } }
58
- end
59
-
60
- def is_resqued_master
61
- satisfy { |p| p[:pid] == @pid && p[:args] =~ /resqued-/ }
62
- end
63
21
  end
@@ -1,5 +1,6 @@
1
1
  require "support/custom_matchers"
2
2
  require "support/resqued_path"
3
+ require "support/resqued_integration_helpers"
3
4
 
4
5
  SPEC_TEMPDIR = File.expand_path("../tmp/spec", File.dirname(__FILE__))
5
6
  FileUtils.mkpath(SPEC_TEMPDIR)
@@ -0,0 +1,50 @@
1
+ module ResquedIntegrationHelpers
2
+ include ResquedPath
3
+
4
+ def start_resqued(config: "", debug: false)
5
+ # Don't configure any workers. That way, we don't need to have redis running.
6
+ config_path = File.join(SPEC_TEMPDIR, "config.rb")
7
+ File.write(config_path, config)
8
+
9
+ @pid =
10
+ if debug
11
+ spawn resqued_path, config_path
12
+ else
13
+ logfile = File.join(SPEC_TEMPDIR, "resqued.log")
14
+ File.write(logfile, "") # truncate it
15
+
16
+ spawn resqued_path, "--logfile", logfile, config_path
17
+ end
18
+ sleep 1.0
19
+ end
20
+
21
+ def restart_resqued
22
+ Process.kill(:HUP, @pid)
23
+ sleep 1.0
24
+ end
25
+
26
+ def expect_running(listener:)
27
+ processes = list_processes
28
+ expect(processes).to include(is_resqued_master)
29
+ listeners = processes.select { |p| p[:ppid] == @pid }.map { |p| p[:args] }
30
+ expect(listeners).to all(match(/#{listener}/)).and(satisfy { |l| l.size == 1 })
31
+ end
32
+
33
+ def expect_not_running
34
+ processes = list_processes
35
+ expect(processes).not_to include(is_resqued_master)
36
+ end
37
+
38
+ def stop_resqued
39
+ Process.kill(:TERM, @pid)
40
+ sleep 1.0
41
+ end
42
+
43
+ def list_processes
44
+ `ps axo pid,ppid,args`.lines.map { |line| pid, ppid, args = line.strip.split(/\s+/, 3); { pid: pid.to_i, ppid: ppid.to_i, args: args } }
45
+ end
46
+
47
+ def is_resqued_master
48
+ satisfy { |p| p[:pid] == @pid && p[:args] =~ /resqued-/ }
49
+ end
50
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resqued
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.2
4
+ version: 0.10.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Burke
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-09-30 00:00:00.000000000 Z
11
+ date: 2020-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: kgio
@@ -137,6 +137,7 @@ files:
137
137
  - spec/fixtures/test_case_clean.rb
138
138
  - spec/fixtures/test_case_environment.rb
139
139
  - spec/fixtures/test_case_no_workers.rb
140
+ - spec/integration/listener_still_starting_spec.rb
140
141
  - spec/integration/master_inherits_child_spec.rb
141
142
  - spec/integration/restart_spec.rb
142
143
  - spec/resqued/backoff_spec.rb
@@ -149,6 +150,7 @@ files:
149
150
  - spec/spec_helper.rb
150
151
  - spec/support/custom_matchers.rb
151
152
  - spec/support/extra-child-shim
153
+ - spec/support/resqued_integration_helpers.rb
152
154
  - spec/support/resqued_path.rb
153
155
  homepage: https://github.com/spraints/resqued
154
156
  licenses:
@@ -176,7 +178,9 @@ summary: Daemon of resque workers
176
178
  test_files:
177
179
  - spec/spec_helper.rb
178
180
  - spec/integration/restart_spec.rb
181
+ - spec/integration/listener_still_starting_spec.rb
179
182
  - spec/integration/master_inherits_child_spec.rb
183
+ - spec/support/resqued_integration_helpers.rb
180
184
  - spec/support/custom_matchers.rb
181
185
  - spec/support/resqued_path.rb
182
186
  - spec/support/extra-child-shim