Skip to content

Add gitlab-ctl support for QUIT signal

Summary

For some processes such as NGINX, the QUIT signal instructs the process to gracefully shutdown after it's finished serving it's connections. This is powerful in the context of upgrades with minimal downtime as it allows for graceful handling of traffic directly via the process that then allows you to do upgrades to other components such as Puma or Workhorse.

gitlab-ctl supports several signal calls to it's child processes but QUIT currently isn't one of them. While you can pass this signal directly to the process as required the GitLab runsv service will start it again as soon as it shuts down kind of defeating the point (although you can issue a stop call straight after).

Ask is for the QUIT signal to be supported.

Proposal

gitlab-ctl quit nginx

NGINX starts it's graceful shutdown, existing requests are honoured and new requests are rejected. Process is stopped and not restarted after it finishes.

References