serverengine 1.5.1 → 1.5.2
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/Changelog +7 -0
- data/README.md +9 -8
- data/lib/serverengine.rb +1 -1
- data/lib/serverengine/daemon.rb +7 -6
- data/lib/serverengine/process_manager.rb +10 -9
- data/lib/serverengine/version.rb +1 -1
- metadata +3 -3
data/Changelog
CHANGED
@@ -1,4 +1,11 @@
|
|
1
1
|
|
2
|
+
2013-06-11 version 1.5.2:
|
3
|
+
|
4
|
+
* Updated default parameters of ProcessManager to be more conservative
|
5
|
+
* Daemon: added :daemonize_error_exit_code option
|
6
|
+
* Fixed ServerEngine.create
|
7
|
+
|
8
|
+
|
2
9
|
2013-06-04 version 1.5.1:
|
3
10
|
|
4
11
|
* Changed #close callback to #after_start
|
data/README.md
CHANGED
@@ -326,6 +326,7 @@ Graceful shutdown and restart call `Worker#stop` method and wait for completion
|
|
326
326
|
- **chuser** changes execution user (not dynamic reloadable)
|
327
327
|
- **chgroup** changes execution group (not dynamic reloadable)
|
328
328
|
- **chumask** changes umask (not dynamic reloadable)
|
329
|
+
- **daemonize_error_exit_code** exit code when daemonize, changing user or changing group fails (default: 1) (not dynamic reloadable)
|
329
330
|
- Supervisor: available only when `supervisor` parameters is true
|
330
331
|
- **server_process_name** changes process name ($0) of server process (not dynamic reloadable)
|
331
332
|
- **restart_server_process** restarts server process when it receives USR1 or HUP signal. (default: false) (not dynamic reloadable)
|
@@ -340,14 +341,14 @@ Graceful shutdown and restart call `Worker#stop` method and wait for completion
|
|
340
341
|
- **start_worker_delay_rand** randomizes start_worker_delay at this ratio (default: 0.2)
|
341
342
|
- Multiprocess server: available only when `worker_type` is "process"
|
342
343
|
- **worker_process_name** changes process name ($0) of workers
|
343
|
-
- **worker_heartbeat_interval**
|
344
|
-
- **worker_heartbeat_timeout**
|
345
|
-
- **worker_graceful_kill_interval**
|
346
|
-
- **worker_graceful_kill_interval_increment**
|
347
|
-
- **worker_graceful_kill_timeout**
|
348
|
-
- **worker_immediate_kill_interval**
|
349
|
-
- **worker_immediate_kill_interval_increment**
|
350
|
-
- **worker_immediate_kill_timeout**
|
344
|
+
- **worker_heartbeat_interval** sets interval of heartbeats in seconds (default: 1.0)
|
345
|
+
- **worker_heartbeat_timeout** sets timeout of heartbeat in seconds (default: 180)
|
346
|
+
- **worker_graceful_kill_interval** sets the first interval of TERM signals in seconds (default: 15)
|
347
|
+
- **worker_graceful_kill_interval_increment** sets increment of TERM signal interval in seconds (default: 10)
|
348
|
+
- **worker_graceful_kill_timeout** sets promotion timeout from TERM to QUIT signal in seconds. -1 means no timeout (default: 600)
|
349
|
+
- **worker_immediate_kill_interval** sets the first interval of QUIT signals in seconds (default: 10)
|
350
|
+
- **worker_immediate_kill_interval_increment** sets increment of QUIT signal interval in seconds (default: 10)
|
351
|
+
- **worker_immediate_kill_timeout** sets promotion timeout from QUIT to KILL signal in seconds. -1 means no timeout (default: 600)
|
351
352
|
- Logger
|
352
353
|
- **log** sets path to log file. Set "-" for STDOUT (default: STDERR)
|
353
354
|
- **log_level** log level: debug, info, warn, error or fatal. (default: debug)
|
data/lib/serverengine.rb
CHANGED
data/lib/serverengine/daemon.rb
CHANGED
@@ -41,6 +41,7 @@ module ServerEngine
|
|
41
41
|
end
|
42
42
|
|
43
43
|
@daemon_process_name = @config[:daemon_process_name]
|
44
|
+
@daemonize_error_exit_code = @config[:daemonize_error_exit_code] || 1
|
44
45
|
|
45
46
|
@pid_path = @config[:pid_path]
|
46
47
|
@chuser = @config[:chuser]
|
@@ -63,7 +64,7 @@ module ServerEngine
|
|
63
64
|
chgid = group.to_i
|
64
65
|
if chgid.to_s != group
|
65
66
|
chgid = `id -g #{Shellwords.escape group}`.to_i
|
66
|
-
exit!
|
67
|
+
exit! @daemonize_error_exit_code unless $?.success?
|
67
68
|
end
|
68
69
|
Process::GID.change_privilege(chgid)
|
69
70
|
end
|
@@ -72,11 +73,11 @@ module ServerEngine
|
|
72
73
|
chuid = user.to_i
|
73
74
|
if chuid.to_s != user
|
74
75
|
chuid = `id -u #{Shellwords.escape user}`.to_i
|
75
|
-
exit!
|
76
|
+
exit! @daemonize_error_exit_code unless $?.success?
|
76
77
|
end
|
77
78
|
|
78
79
|
user_groups = `id -G #{Shellwords.escape user}`.split.map(&:to_i)
|
79
|
-
exit!
|
80
|
+
exit! @daemonize_error_exit_code unless $?.success?
|
80
81
|
|
81
82
|
Process.groups = Process.groups | user_groups
|
82
83
|
Process::UID.change_privilege(chuid)
|
@@ -90,7 +91,7 @@ module ServerEngine
|
|
90
91
|
exit main
|
91
92
|
rescue
|
92
93
|
ServerEngine.dump_uncaught_error($!)
|
93
|
-
exit
|
94
|
+
exit @daemonize_error_exit_code
|
94
95
|
end
|
95
96
|
end
|
96
97
|
|
@@ -133,7 +134,7 @@ module ServerEngine
|
|
133
134
|
|
134
135
|
exit 0
|
135
136
|
ensure
|
136
|
-
exit!
|
137
|
+
exit! @daemonize_error_exit_code
|
137
138
|
end
|
138
139
|
end
|
139
140
|
|
@@ -148,7 +149,7 @@ module ServerEngine
|
|
148
149
|
|
149
150
|
data = rpipe.read
|
150
151
|
if data != "\n"
|
151
|
-
return
|
152
|
+
return @daemonize_error_exit_code
|
152
153
|
end
|
153
154
|
|
154
155
|
return 0
|
@@ -62,13 +62,13 @@ module ServerEngine
|
|
62
62
|
|
63
63
|
CONFIG_PARAMS = {
|
64
64
|
heartbeat_interval: 1,
|
65
|
-
heartbeat_timeout:
|
66
|
-
graceful_kill_interval:
|
67
|
-
graceful_kill_interval_increment:
|
68
|
-
graceful_kill_timeout:
|
69
|
-
immediate_kill_interval:
|
70
|
-
immediate_kill_interval_increment:
|
71
|
-
immediate_kill_timeout:
|
65
|
+
heartbeat_timeout: 180,
|
66
|
+
graceful_kill_interval: 15,
|
67
|
+
graceful_kill_interval_increment: 10,
|
68
|
+
graceful_kill_timeout: 600,
|
69
|
+
immediate_kill_interval: 10,
|
70
|
+
immediate_kill_interval_increment: 10,
|
71
|
+
immediate_kill_timeout: 600,
|
72
72
|
}
|
73
73
|
|
74
74
|
attr_reader :graceful_kill_signal, :immediate_kill_signal
|
@@ -303,7 +303,7 @@ module ServerEngine
|
|
303
303
|
if !@immediate_kill_start_time
|
304
304
|
# check escalation
|
305
305
|
if heartbeat_delay >= @pm.heartbeat_timeout ||
|
306
|
-
(@graceful_kill_start_time && @pm.graceful_kill_timeout
|
306
|
+
(@graceful_kill_start_time && @pm.graceful_kill_timeout >= 0 &&
|
307
307
|
@graceful_kill_start_time < now - @pm.graceful_kill_timeout)
|
308
308
|
# escalate to immediate kill
|
309
309
|
@kill_count = 0
|
@@ -322,7 +322,8 @@ module ServerEngine
|
|
322
322
|
if @immediate_kill_start_time
|
323
323
|
interval = @pm.immediate_kill_interval
|
324
324
|
interval_incr = @pm.immediate_kill_interval_increment
|
325
|
-
if @
|
325
|
+
if @pm.immediate_kill_timeout >= 0 &&
|
326
|
+
@immediate_kill_start_time <= now - @pm.immediate_kill_timeout
|
326
327
|
# escalate to SIGKILL
|
327
328
|
signal = :KILL
|
328
329
|
else
|
data/lib/serverengine/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: serverengine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.2
|
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-06-
|
12
|
+
date: 2013-06-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sigdump
|
@@ -117,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
117
|
version: '0'
|
118
118
|
segments:
|
119
119
|
- 0
|
120
|
-
hash:
|
120
|
+
hash: 3345901740562467160
|
121
121
|
requirements: []
|
122
122
|
rubyforge_project:
|
123
123
|
rubygems_version: 1.8.23
|