bluepill 0.0.14 → 0.0.15
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.
- data/VERSION +1 -1
- data/bin/bluepill +1 -1
- data/bluepill.gemspec +1 -2
- data/lib/bluepill/application.rb +16 -15
- data/lib/bluepill.rb +1 -0
- metadata +1 -2
- data/lib/bluepill/comm.rb +0 -5
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.15
|
data/bin/bluepill
CHANGED
@@ -62,5 +62,5 @@ when *ALLOWED_COMMANDS
|
|
62
62
|
puts controller.send_cmd(options[:application], options[:command], process_or_group_name)
|
63
63
|
|
64
64
|
else
|
65
|
-
puts "Unknown command `%s`" % options[:command]
|
65
|
+
puts "Unknown command `%s` (or application `%s` has not been loaded yet)" % [options[:command], options[:command]]
|
66
66
|
end
|
data/bluepill.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{bluepill}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.15"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Arya Asemanfar", "Gary Tsang", "Rohith Ravi"]
|
@@ -32,7 +32,6 @@ Gem::Specification.new do |s|
|
|
32
32
|
"lib/bluepill/application.rb",
|
33
33
|
"lib/bluepill/application/client.rb",
|
34
34
|
"lib/bluepill/application/server.rb",
|
35
|
-
"lib/bluepill/comm.rb",
|
36
35
|
"lib/bluepill/condition_watch.rb",
|
37
36
|
"lib/bluepill/controller.rb",
|
38
37
|
"lib/bluepill/dsl.rb",
|
data/lib/bluepill/application.rb
CHANGED
@@ -1,18 +1,19 @@
|
|
1
1
|
module Bluepill
|
2
2
|
class Application
|
3
3
|
attr_accessor :name, :logger, :base_dir, :socket, :pid_file
|
4
|
-
attr_accessor :groups, :work_queue
|
4
|
+
attr_accessor :groups, :work_queue, :socket_timeout
|
5
5
|
|
6
6
|
def initialize(name, options = {})
|
7
7
|
self.name = name
|
8
8
|
self.base_dir = options[:base_dir] ||= '/var/bluepill'
|
9
|
+
self.socket_timeout = options[:socket_timeout] ||= 10
|
9
10
|
|
10
11
|
self.logger = Bluepill::Logger.new.prefix_with(self.name)
|
11
12
|
|
12
13
|
self.groups = Hash.new
|
13
14
|
|
14
15
|
self.pid_file = File.join(self.base_dir, 'pids', self.name + ".pid")
|
15
|
-
|
16
|
+
|
16
17
|
@server = false
|
17
18
|
end
|
18
19
|
|
@@ -123,11 +124,19 @@ module Bluepill
|
|
123
124
|
end
|
124
125
|
|
125
126
|
def send_to_server(method)
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
127
|
+
begin
|
128
|
+
status = Timeout::timeout(self.socket_timeout) do
|
129
|
+
self.socket = Bluepill::Socket.new(name, base_dir).client # Something that should be interrupted if it takes too much time...
|
130
|
+
socket.write(method + "\n")
|
131
|
+
buffer = ""
|
132
|
+
while(line = socket.gets)
|
133
|
+
buffer << line
|
134
|
+
end
|
135
|
+
end
|
136
|
+
rescue Timeout::Error
|
137
|
+
abort("Socket Timeout: Server may not be responding")
|
138
|
+
rescue Errno::ECONNREFUSED
|
139
|
+
abort("Connection Refused: Server is not running")
|
131
140
|
end
|
132
141
|
return buffer
|
133
142
|
end
|
@@ -138,13 +147,9 @@ private
|
|
138
147
|
Thread.new(self) do |app|
|
139
148
|
begin
|
140
149
|
loop do
|
141
|
-
# logger.info("Server | Command loop started:")
|
142
150
|
client = socket.accept
|
143
|
-
# logger.info("Server: Handling Request")
|
144
151
|
cmd = client.readline.strip
|
145
|
-
# logger.info("Server: #{cmd}")
|
146
152
|
response = app.send(*cmd.split(":"))
|
147
|
-
# logger.info("Server: Sending Response")
|
148
153
|
client.write(response)
|
149
154
|
client.close
|
150
155
|
end
|
@@ -159,15 +164,12 @@ private
|
|
159
164
|
Thread.new(self) do |app|
|
160
165
|
loop do
|
161
166
|
begin
|
162
|
-
# app.logger.info("Server | worker loop started:")
|
163
167
|
job = app.work_queue.pop
|
164
168
|
send_to_process_or_group(job[0], job[1], false)
|
165
|
-
|
166
169
|
rescue StandardError => e
|
167
170
|
logger.err("Error while trying to execute %s from work_queue" % job.inspect)
|
168
171
|
logger.err("%s: `%s`" % [e.class.name, e.message])
|
169
172
|
end
|
170
|
-
# app.logger.info("Server | worker job processed:")
|
171
173
|
end
|
172
174
|
end
|
173
175
|
end
|
@@ -181,7 +183,6 @@ private
|
|
181
183
|
::Process.kill(2, previous_pid)
|
182
184
|
rescue Exception => e
|
183
185
|
exit unless e.is_a?(Errno::ESRCH)
|
184
|
-
# it was probably already dead
|
185
186
|
else
|
186
187
|
sleep 1 # wait for it to die
|
187
188
|
end
|
data/lib/bluepill.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bluepill
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arya Asemanfar
|
@@ -87,7 +87,6 @@ files:
|
|
87
87
|
- lib/bluepill/application.rb
|
88
88
|
- lib/bluepill/application/client.rb
|
89
89
|
- lib/bluepill/application/server.rb
|
90
|
-
- lib/bluepill/comm.rb
|
91
90
|
- lib/bluepill/condition_watch.rb
|
92
91
|
- lib/bluepill/controller.rb
|
93
92
|
- lib/bluepill/dsl.rb
|