bnspopi opened a new pull request, #74593:
URL: https://github.com/apache/airflow/pull/74593

   The chart sets a preStop hook on PgBouncer by default: `killall -INT 
pgbouncer && sleep 120`. Since PgBouncer 1.23 SIGINT means "close the database 
connections and exit now", so the process is gone in well under a second. The 
pod stops accepting connections before Kubernetes has taken it out of the 
Service endpoints, and during a rolling restart new connections still get 
routed to it and fail with `Connection refused`. That is what #69571 reports. 
The `sleep 120` after it never runs for long because the container exits first.
   
   This removes the default hook, as @Miretpl suggested in #69608. With no hook 
Kubernetes sends SIGTERM. On SIGTERM PgBouncer keeps serving the clients that 
are already connected and exits when they have all disconnected. In the 
meantime the terminating pod is removed from the endpoints, so new connections 
go to the other replicas. `terminationGracePeriodSeconds` (120 by default since 
#71237) caps how long the drain can take.
   
   Nothing changes for users who set `pgbouncer.containerLifecycleHooks` 
themselves. The schema default and the lifecycle test are updated to match, and 
the comment on `terminationGracePeriodSeconds` no longer refers to the removed 
hook.
   
   I have not been able to try this on a busy cluster, so it would be good if 
@andrew-stein-sp could confirm it fixes the dropped connections he saw.
   
   closes: #69571
   related: #69608, #71237
   
   ---
   
   ##### Was generative AI tooling used to co-author this PR?
   
   - [X] Yes (Claude Code)
   
   Generated-by: Claude Code following [the 
guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#gen-ai-assisted-contributions)
   
   ---
   
   * Read the **[Pull Request 
Guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#pull-request-guidelines)**
 for more information. Note: commit author/co-author name and email in commits 
become permanently public when merged.
   * For fundamental code changes, an Airflow Improvement Proposal 
([AIP](https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+Improvement+Proposals))
 is needed.
   * When adding dependency, check compliance with the [ASF 3rd Party License 
Policy](https://www.apache.org/legal/resolved.html#category-x).
   * For significant user-facing changes create newsfragment: 
`{pr_number}.significant.rst`, in 
[airflow-core/newsfragments](https://github.com/apache/airflow/tree/main/airflow-core/newsfragments).
 You can add this file in a follow-up commit after the PR is created so you 
know the PR number.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to