resqued 0.10.2 → 0.10.3

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: 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