Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature request: new 'max-sigterm-delay' flag #1189

Open
magiccrafter opened this issue Nov 17, 2023 · 1 comment
Open

feature request: new 'max-sigterm-delay' flag #1189

magiccrafter opened this issue Nov 17, 2023 · 1 comment

Comments

@magiccrafter
Copy link

The --max-sigterm-delay flag is crucial for microservices that require a graceful shutdown period to ensure ongoing transactions are completed successfully. This flag allows the microservice to remain operational for a specified duration after receiving a termination signal (SIGTERM), granting sufficient time for its database connector to remain active and handle pending transactions.

flag description
--max-sigterm-delay Maximum number of seconds to wait for connections to close after receiving a TERM signal.

Disclaimer: The name of the flag and the description are copied from the https://github.com/GoogleCloudPlatform/cloud-sql-proxy

Implementing this feature will smoothen the transition from Postgres to Spanner.

olavloite pushed a commit that referenced this issue Jul 16, 2024
Register signal handlers for SIGTERM, SIGINT, and SIGQUIT to allow
graceful shutdown, and add support for the SMART shutdown mode
from PostgreSQL. The SMART shutdown mode allows the server to
drain connections and shut down after all connections have closed.

Updates #2040
Updates #1189
@olavloite
Copy link
Collaborator

Version 0.38.0 that was shipped recently improved shutdown handling:

  1. SIGTERM: This initiates the SMART shutdown mode. In this mode, all new connection requests will be refused, but existing connections are allowed to continue. PGAdapter shuts down when all connections have been closed.
  2. SIGINT: This initiates the FAST shutdown mode. This closes all existing connections and shuts down PGAdapter.
  3. SIGQUIT: (This is relatively theoretical, as JVMs do not allow applications to register a handler for SIGQUIT.) SIGQUIT initiates the IMMEDIATE shutdown mode. For PGAdapter, this is largely the same as the FAST shutdown mode, with the only exception that in IMMEDIATE shutdown mode, PGAdapter does not wait for the internal Spanner session pool to be cleaned up.

The above is designed to align as much as possible with https://www.postgresql.org/docs/current/server-shutdown.html. You can 'upgrade' from SMART to FAST shutdown mode by first sending PGAdapter a SIGTERM, then wait X seconds, and then send it a SIGINT.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants