Browse code

Merge "Enable graceful shutdown for services"

Jenkins authored on 2017/09/19 10:49:24
Showing 3 changed files
... ...
@@ -1395,6 +1395,8 @@ function write_user_unit_file {
1395 1395
     iniset -sudo $unitfile "Unit" "Description" "Devstack $service"
1396 1396
     iniset -sudo $unitfile "Service" "User" "$user"
1397 1397
     iniset -sudo $unitfile "Service" "ExecStart" "$command"
1398
+    iniset -sudo $unitfile "Service" "KillMode" "process"
1399
+    iniset -sudo $unitfile "Service" "TimeoutStopSec" "infinity"
1398 1400
     if [[ -n "$group" ]]; then
1399 1401
         iniset -sudo $unitfile "Service" "Group" "$group"
1400 1402
     fi
... ...
@@ -1417,7 +1419,7 @@ function write_uwsgi_user_unit_file {
1417 1417
     iniset -sudo $unitfile "Service" "User" "$user"
1418 1418
     iniset -sudo $unitfile "Service" "ExecStart" "$command"
1419 1419
     iniset -sudo $unitfile "Service" "Type" "notify"
1420
-    iniset -sudo $unitfile "Service" "KillSignal" "SIGQUIT"
1420
+    iniset -sudo $unitfile "Service" "KillMode" "process"
1421 1421
     iniset -sudo $unitfile "Service" "Restart" "always"
1422 1422
     iniset -sudo $unitfile "Service" "NotifyAccess" "all"
1423 1423
     iniset -sudo $unitfile "Service" "RestartForceExitStatus" "100"
... ...
@@ -260,10 +260,15 @@ function write_uwsgi_config {
260 260
     # Set die-on-term & exit-on-reload so that uwsgi shuts down
261 261
     iniset "$file" uwsgi die-on-term true
262 262
     iniset "$file" uwsgi exit-on-reload true
263
+    # Set worker-reload-mercy so that worker will not exit till the time
264
+    # configured after graceful shutdown
265
+    iniset "$file" uwsgi worker-reload-mercy $WORKER_TIMEOUT
263 266
     iniset "$file" uwsgi enable-threads true
264 267
     iniset "$file" uwsgi plugins python
265 268
     # uwsgi recommends this to prevent thundering herd on accept.
266 269
     iniset "$file" uwsgi thunder-lock true
270
+    # Set hook to trigger graceful shutdown on SIGTERM
271
+    iniset "$file" uwsgi hook-master-start "unix_signal:15 gracefully_kill_them_all"
267 272
     # Override the default size for headers from the 4k default.
268 273
     iniset "$file" uwsgi buffer-size 65535
269 274
     # Make sure the client doesn't try to re-use the connection.
... ...
@@ -316,6 +321,11 @@ function write_local_uwsgi_http_config {
316 316
     iniset "$file" uwsgi plugins python
317 317
     # uwsgi recommends this to prevent thundering herd on accept.
318 318
     iniset "$file" uwsgi thunder-lock true
319
+    # Set hook to trigger graceful shutdown on SIGTERM
320
+    iniset "$file" uwsgi hook-master-start "unix_signal:15 gracefully_kill_them_all"
321
+    # Set worker-reload-mercy so that worker will not exit till the time
322
+    # configured after graceful shutdown
323
+    iniset "$file" uwsgi worker-reload-mercy $WORKER_TIMEOUT
319 324
     # Override the default size for headers from the 4k default.
320 325
     iniset "$file" uwsgi buffer-size 65535
321 326
     # Make sure the client doesn't try to re-use the connection.
... ...
@@ -793,6 +793,9 @@ SERVICE_TIMEOUT=${SERVICE_TIMEOUT:-60}
793 793
 # Service graceful shutdown timeout
794 794
 SERVICE_GRACEFUL_SHUTDOWN_TIMEOUT=${SERVICE_GRACEFUL_SHUTDOWN_TIMEOUT:-5}
795 795
 
796
+# Service graceful shutdown timeout
797
+WORKER_TIMEOUT=${WORKER_TIMEOUT:-90}
798
+
796 799
 # Support alternative yum -- in future Fedora 'dnf' will become the
797 800
 # only supported installer, but for now 'yum' and 'dnf' are both
798 801
 # available in parallel with compatible CLIs.  Allow manual switching