resqued 0.9.0 → 0.10.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 +4 -4
- data/CHANGES.md +6 -0
- data/exe/resqued +41 -22
- data/lib/resqued.rb +5 -5
- data/lib/resqued/config.rb +7 -7
- data/lib/resqued/config/after_fork.rb +1 -1
- data/lib/resqued/config/base.rb +1 -1
- data/lib/resqued/config/before_fork.rb +1 -1
- data/lib/resqued/config/worker.rb +12 -12
- data/lib/resqued/daemon.rb +1 -0
- data/lib/resqued/exec_on_hup.rb +43 -0
- data/lib/resqued/listener.rb +48 -48
- data/lib/resqued/listener_pool.rb +92 -0
- data/lib/resqued/listener_proxy.rb +37 -31
- data/lib/resqued/listener_state.rb +8 -0
- data/lib/resqued/logging.rb +15 -8
- data/lib/resqued/master.rb +91 -97
- data/lib/resqued/master_state.rb +73 -0
- data/lib/resqued/procline_version.rb +2 -2
- data/lib/resqued/sleepy.rb +6 -4
- data/lib/resqued/test_case.rb +3 -3
- data/lib/resqued/version.rb +1 -1
- data/lib/resqued/worker.rb +16 -13
- data/spec/fixtures/test_case_after_fork_raises.rb +5 -2
- data/spec/fixtures/test_case_before_fork_raises.rb +4 -1
- data/spec/fixtures/test_case_environment.rb +3 -1
- data/spec/resqued/backoff_spec.rb +19 -19
- data/spec/resqued/config/fork_event_spec.rb +8 -8
- data/spec/resqued/config/worker_spec.rb +52 -50
- data/spec/resqued/config_spec.rb +6 -6
- data/spec/resqued/sleepy_spec.rb +10 -11
- data/spec/resqued/test_case_spec.rb +7 -7
- data/spec/spec_helper.rb +1 -1
- data/spec/support/custom_matchers.rb +1 -1
- data/spec/test_restart.sh +84 -0
- metadata +31 -13
- data/exe/resqued-listener +0 -6
data/spec/resqued/config_spec.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "fileutils"
|
4
|
+
require "tmpdir"
|
5
5
|
|
6
|
-
require
|
6
|
+
require "resqued/config"
|
7
7
|
|
8
8
|
describe Resqued::Config do
|
9
9
|
context do
|
@@ -19,8 +19,8 @@ describe Resqued::Config do
|
|
19
19
|
end
|
20
20
|
let(:config) { Resqued::Config.new([@config_file]) }
|
21
21
|
|
22
|
-
it("can require_relative") { config.build_workers
|
23
|
-
it("does not override require_relative in required files") { config.build_workers
|
22
|
+
it("can require_relative") { config.build_workers; expect($test_val).to eq(:ok) }
|
23
|
+
it("does not override require_relative in required files") { config.build_workers; expect($other_test_val).to eq(:ok) }
|
24
24
|
|
25
25
|
def make_file(dir, relative_path, content)
|
26
26
|
File.join(dir, relative_path).tap do |path|
|
data/spec/resqued/sleepy_spec.rb
CHANGED
@@ -1,34 +1,33 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require 'thread'
|
1
|
+
require "spec_helper"
|
2
|
+
require "resqued/sleepy"
|
4
3
|
|
5
4
|
describe Resqued::Sleepy do
|
6
5
|
include Resqued::Sleepy
|
7
6
|
|
8
|
-
it
|
7
|
+
it "sleeps" do
|
9
8
|
expect { yawn(0.2) }.to run_for(0.2)
|
10
9
|
end
|
11
10
|
|
12
|
-
it
|
13
|
-
Thread.new { sleep 0.1
|
11
|
+
it "wakes on `awake`" do
|
12
|
+
Thread.new { sleep 0.1; awake }
|
14
13
|
expect { yawn(2.0) }.to run_for(0.1)
|
15
14
|
end
|
16
15
|
|
17
|
-
it
|
16
|
+
it "wakes on IO" do
|
18
17
|
rd, wr = IO.pipe
|
19
|
-
Thread.new { sleep 0.1
|
18
|
+
Thread.new { sleep 0.1; wr.write(".") }
|
20
19
|
expect { yawn(2.0, rd) }.to run_for(0.1)
|
21
20
|
end
|
22
21
|
|
23
|
-
it
|
22
|
+
it "does not sleep if duration is 0" do
|
24
23
|
expect { yawn(-0.000001) }.to run_for(0.0)
|
25
24
|
end
|
26
25
|
|
27
|
-
it
|
26
|
+
it "does not sleep if duration is negative" do
|
28
27
|
expect { yawn(0) }.to run_for(0.0)
|
29
28
|
end
|
30
29
|
|
31
|
-
it
|
30
|
+
it "sleeps if io is nil" do
|
32
31
|
expect { yawn(0.5, nil) }.to run_for(0.5)
|
33
32
|
end
|
34
33
|
end
|
@@ -1,14 +1,14 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "spec_helper"
|
2
|
+
require "resqued/test_case"
|
3
3
|
|
4
4
|
describe Resqued::TestCase do
|
5
5
|
let(:test_case) { Object.new.extend(the_module) }
|
6
6
|
|
7
|
-
context
|
7
|
+
context "LoadConfig" do
|
8
8
|
let(:the_module) { described_class::LoadConfig }
|
9
|
-
it { expect { test_case.assert_resqued
|
10
|
-
it { expect { test_case.assert_resqued
|
11
|
-
it { expect { test_case.assert_resqued
|
12
|
-
it { expect { test_case.assert_resqued
|
9
|
+
it { expect { test_case.assert_resqued "spec/fixtures/test_case_environment.rb", "spec/fixtures/test_case_clean.rb" }.not_to raise_error }
|
10
|
+
it { expect { test_case.assert_resqued "spec/fixtures/test_case_environment.rb", "spec/fixtures/test_case_before_fork_raises.rb" }.to raise_error }
|
11
|
+
it { expect { test_case.assert_resqued "spec/fixtures/test_case_environment.rb", "spec/fixtures/test_case_after_fork_raises.rb" }.to raise_error }
|
12
|
+
it { expect { test_case.assert_resqued "spec/fixtures/test_case_environment.rb", "spec/fixtures/test_case_no_workers.rb" }.not_to raise_error }
|
13
13
|
end
|
14
14
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
require
|
1
|
+
require "support/custom_matchers"
|
@@ -0,0 +1,84 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
set -e
|
4
|
+
set -o nounset
|
5
|
+
|
6
|
+
WORKDIR="$(mktemp)"
|
7
|
+
PIDFILE="${WORKDIR}/resqued.pid"
|
8
|
+
CONFIG="${WORKDIR}/config.rb"
|
9
|
+
|
10
|
+
# mktemp makes a file, but we want a dir.
|
11
|
+
rm -f "$WORKDIR"
|
12
|
+
mkdir "$WORKDIR"
|
13
|
+
|
14
|
+
set -x
|
15
|
+
cd "$(dirname "$0")/.."
|
16
|
+
|
17
|
+
main() {
|
18
|
+
trap cleanup EXIT
|
19
|
+
|
20
|
+
configure_resqued
|
21
|
+
start_resqued
|
22
|
+
restart_resqued
|
23
|
+
stop_resqued
|
24
|
+
}
|
25
|
+
|
26
|
+
configure_resqued() {
|
27
|
+
# Don't configure any workers. That way, we don't need to have redis running.
|
28
|
+
touch "${CONFIG}"
|
29
|
+
}
|
30
|
+
|
31
|
+
start_resqued() {
|
32
|
+
bin_resqued=bin/resqued
|
33
|
+
if [ -x gemfiles/bin/resqued ]; then
|
34
|
+
bin_resqued=gemfiles/bin/resqued
|
35
|
+
fi
|
36
|
+
$bin_resqued --pidfile "${PIDFILE}" "${CONFIG}" &
|
37
|
+
sleep 1
|
38
|
+
echo expect to find the master process and the first listener
|
39
|
+
running # set -e will make the test fail if it's not running
|
40
|
+
ps axo pid,args -H | grep [r]esqued-
|
41
|
+
ps axo pid,args | grep [r]esqued- | grep -q 'listener #1.*running'
|
42
|
+
}
|
43
|
+
|
44
|
+
restart_resqued() {
|
45
|
+
local pid="$(cat "${PIDFILE}")"
|
46
|
+
kill -HUP "$pid"
|
47
|
+
sleep 1
|
48
|
+
echo expect to find the master process and the second listener
|
49
|
+
running
|
50
|
+
ps axo pid,args -H | grep [r]esqued-
|
51
|
+
ps axo pid,args | grep [r]esqued- | grep -qv 'listener #1'
|
52
|
+
ps axo pid,args | grep [r]esqued- | grep -q 'listener #2.*running'
|
53
|
+
}
|
54
|
+
|
55
|
+
stop_resqued() {
|
56
|
+
local pid="$(cat "${PIDFILE}")"
|
57
|
+
kill -TERM "$pid"
|
58
|
+
sleep 1
|
59
|
+
echo expect everything to be stopped
|
60
|
+
if running >&/dev/null; then
|
61
|
+
echo "expected resqued to be stopped"
|
62
|
+
false
|
63
|
+
fi
|
64
|
+
ps axo pid,args -H | grep [r]esqued- || true
|
65
|
+
test -z "$(ps axo pid,args | grep [r]esqued-)"
|
66
|
+
}
|
67
|
+
|
68
|
+
running() {
|
69
|
+
set -e
|
70
|
+
test -f "${PIDFILE}"
|
71
|
+
local pid="$(cat "${PIDFILE}")"
|
72
|
+
kill -0 "$pid"
|
73
|
+
ps o pid,args "$pid"
|
74
|
+
}
|
75
|
+
|
76
|
+
cleanup() {
|
77
|
+
while running >&/dev/null; do
|
78
|
+
kill -TERM "$(cat "${PIDFILE}")"
|
79
|
+
sleep 2
|
80
|
+
done
|
81
|
+
rm -rfv "${WORKDIR}" || rm -rf "${WORKDIR}"
|
82
|
+
}
|
83
|
+
|
84
|
+
main
|
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.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Burke
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-12-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kgio
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: mono_logger
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: resque
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -39,19 +53,19 @@ dependencies:
|
|
39
53
|
- !ruby/object:Gem::Version
|
40
54
|
version: 1.9.1
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
56
|
+
name: rake
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
59
|
- - "~>"
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
48
|
-
type: :
|
61
|
+
version: 0.9.0
|
62
|
+
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
66
|
- - "~>"
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
68
|
+
version: 0.9.0
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rspec
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -73,24 +87,23 @@ dependencies:
|
|
73
87
|
- !ruby/object:Gem::Version
|
74
88
|
version: '2.99'
|
75
89
|
- !ruby/object:Gem::Dependency
|
76
|
-
name:
|
90
|
+
name: rubocop
|
77
91
|
requirement: !ruby/object:Gem::Requirement
|
78
92
|
requirements:
|
79
|
-
- -
|
93
|
+
- - '='
|
80
94
|
- !ruby/object:Gem::Version
|
81
|
-
version: 0.
|
95
|
+
version: 0.78.0
|
82
96
|
type: :development
|
83
97
|
prerelease: false
|
84
98
|
version_requirements: !ruby/object:Gem::Requirement
|
85
99
|
requirements:
|
86
|
-
- -
|
100
|
+
- - '='
|
87
101
|
- !ruby/object:Gem::Version
|
88
|
-
version: 0.
|
102
|
+
version: 0.78.0
|
89
103
|
description: Daemon of resque workers
|
90
104
|
email: spraints@gmail.com
|
91
105
|
executables:
|
92
106
|
- resqued
|
93
|
-
- resqued-listener
|
94
107
|
extensions: []
|
95
108
|
extra_rdoc_files: []
|
96
109
|
files:
|
@@ -101,7 +114,6 @@ files:
|
|
101
114
|
- docs/processes.md
|
102
115
|
- docs/signals.md
|
103
116
|
- exe/resqued
|
104
|
-
- exe/resqued-listener
|
105
117
|
- lib/resqued.rb
|
106
118
|
- lib/resqued/backoff.rb
|
107
119
|
- lib/resqued/config.rb
|
@@ -111,10 +123,14 @@ files:
|
|
111
123
|
- lib/resqued/config/dsl.rb
|
112
124
|
- lib/resqued/config/worker.rb
|
113
125
|
- lib/resqued/daemon.rb
|
126
|
+
- lib/resqued/exec_on_hup.rb
|
114
127
|
- lib/resqued/listener.rb
|
128
|
+
- lib/resqued/listener_pool.rb
|
115
129
|
- lib/resqued/listener_proxy.rb
|
130
|
+
- lib/resqued/listener_state.rb
|
116
131
|
- lib/resqued/logging.rb
|
117
132
|
- lib/resqued/master.rb
|
133
|
+
- lib/resqued/master_state.rb
|
118
134
|
- lib/resqued/pidfile.rb
|
119
135
|
- lib/resqued/procline_version.rb
|
120
136
|
- lib/resqued/runtime_info.rb
|
@@ -136,6 +152,7 @@ files:
|
|
136
152
|
- spec/resqued/test_case_spec.rb
|
137
153
|
- spec/spec_helper.rb
|
138
154
|
- spec/support/custom_matchers.rb
|
155
|
+
- spec/test_restart.sh
|
139
156
|
homepage: https://github.com/spraints/resqued
|
140
157
|
licenses:
|
141
158
|
- MIT
|
@@ -174,4 +191,5 @@ test_files:
|
|
174
191
|
- spec/fixtures/test_case_no_workers.rb
|
175
192
|
- spec/fixtures/test_case_after_fork_raises.rb
|
176
193
|
- spec/fixtures/test_case_clean.rb
|
194
|
+
- spec/test_restart.sh
|
177
195
|
- spec/support/custom_matchers.rb
|