fate 0.2.18 → 0.2.20
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/fate.rb +2 -7
- data/lib/fate/process_manager.rb +19 -10
- data/lib/fate/repl.rb +1 -1
- data/lib/fate/service.rb +6 -5
- metadata +4 -4
data/lib/fate.rb
CHANGED
@@ -56,16 +56,11 @@ class Fate
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def stop
|
59
|
-
|
60
|
-
ordered.each do |name|
|
61
|
-
manager.stop_command(name)
|
62
|
-
end
|
59
|
+
manager.stop_all
|
63
60
|
end
|
64
61
|
|
65
62
|
def restart
|
66
63
|
stop
|
67
|
-
# FIXME: this is here to prevent redis-server from crying
|
68
|
-
sleep 0.5
|
69
64
|
start
|
70
65
|
end
|
71
66
|
|
@@ -82,7 +77,7 @@ class Fate
|
|
82
77
|
if manager.start_group(commands)
|
83
78
|
logger.green "All commands in '#{command_spec}' running."
|
84
79
|
else
|
85
|
-
logger.
|
80
|
+
logger.error "Failed to start '#{command_spec}'."
|
86
81
|
end
|
87
82
|
end
|
88
83
|
end
|
data/lib/fate/process_manager.rb
CHANGED
@@ -19,14 +19,15 @@ class Fate
|
|
19
19
|
@names_by_pid = {}
|
20
20
|
@pids_by_name = {}
|
21
21
|
at_exit do
|
22
|
-
|
22
|
+
stop_all
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
def
|
26
|
+
def stop_all
|
27
27
|
@mutex.synchronize do
|
28
|
-
@
|
29
|
-
|
28
|
+
ordered = @service.stop_order(running)
|
29
|
+
ordered.each do |name|
|
30
|
+
term(name)
|
30
31
|
end
|
31
32
|
end
|
32
33
|
end
|
@@ -52,22 +53,30 @@ class Fate
|
|
52
53
|
end
|
53
54
|
end
|
54
55
|
|
55
|
-
def
|
56
|
+
def stop_command(name)
|
57
|
+
term(name)
|
58
|
+
end
|
59
|
+
|
60
|
+
def term(name)
|
56
61
|
if pid = @pids_by_name[name]
|
57
62
|
@names_by_pid.delete(pid)
|
58
63
|
@pids_by_name.delete(name)
|
59
64
|
@threads.delete(name)
|
60
65
|
system "kill -s TERM #{pid}"
|
61
66
|
logger.info "Sent a kill signal to '#{name}' running at #{pid}"
|
67
|
+
begin
|
68
|
+
# Signal 0 checks for the process, but sends no signal.
|
69
|
+
Process.kill(0, pid)
|
70
|
+
rescue
|
71
|
+
# TODO: limit number of retries, possibly issue kill -9?
|
72
|
+
sleep 0.01
|
73
|
+
retry
|
74
|
+
end
|
62
75
|
else
|
63
76
|
logger.error "Could not find pid for '#{name}'"
|
64
77
|
end
|
65
78
|
end
|
66
79
|
|
67
|
-
def stop_command(name)
|
68
|
-
kill(name)
|
69
|
-
end
|
70
|
-
|
71
80
|
def spawn(name, command)
|
72
81
|
return Thread.new do
|
73
82
|
|
@@ -155,7 +164,7 @@ class Fate
|
|
155
164
|
end
|
156
165
|
logger.info "Shutting down all processes."
|
157
166
|
|
158
|
-
|
167
|
+
stop_all
|
159
168
|
exit(1)
|
160
169
|
end
|
161
170
|
|
data/lib/fate/repl.rb
CHANGED
data/lib/fate/service.rb
CHANGED
@@ -86,10 +86,10 @@ class Fate
|
|
86
86
|
@completions ||= Set.new
|
87
87
|
hash.each_path do |path, value|
|
88
88
|
key = path.join(".")
|
89
|
-
# add dot-delimited
|
90
|
-
|
91
|
-
|
92
|
-
|
89
|
+
# add dot-delimited process names to the completions
|
90
|
+
(path.size).times do |i|
|
91
|
+
@completions << path.slice(0..i).join(".")
|
92
|
+
end
|
93
93
|
out[key] = value
|
94
94
|
end
|
95
95
|
out
|
@@ -104,8 +104,9 @@ class Fate
|
|
104
104
|
targets += resolve_commands(gname)
|
105
105
|
end
|
106
106
|
else
|
107
|
+
regex = /^#{name}\..*/
|
107
108
|
@commands.each do |cname, _command|
|
108
|
-
if cname
|
109
|
+
if cname =~ regex
|
109
110
|
targets << cname
|
110
111
|
end
|
111
112
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.20
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-04-
|
12
|
+
date: 2013-04-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
@@ -34,7 +34,7 @@ dependencies:
|
|
34
34
|
requirements:
|
35
35
|
- - ! '>='
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version: 0.2.
|
37
|
+
version: 0.2.10
|
38
38
|
type: :runtime
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -42,7 +42,7 @@ dependencies:
|
|
42
42
|
requirements:
|
43
43
|
- - ! '>='
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: 0.2.
|
45
|
+
version: 0.2.10
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: squeeze
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|