Re: psql not responding to SIGINT upon db reconnection
Tristan Partin <tristan@neon.tech>
From: "Tristan Partin" <tristan@neon.tech>
To: "Tom Lane" <tgl@sss.pgh.pa.us>
Cc: <pgsql-hackers@postgresql.org>
Date: 2023-07-24T19:57:58Z
Lists: pgsql-hackers
Attachments
- v4-0001-Allow-SIGINT-to-cancel-psql-database-reconnection.patch (text/x-patch) patch v4-0001
On Mon Jul 24, 2023 at 12:43 PM CDT, Tom Lane wrote: > "Tristan Partin" <tristan@neon.tech> writes: > > v3 is attached which fixes up some code comments I added which I hadn't > > attached to the commit already, sigh. > > I don't care for this patch at all. You're bypassing the pqsignal > abstraction layer that the rest of psql goes through, and the behavior > you're implementing isn't very nice. People do not expect ^C to > kill psql - it should just stop the \c attempt and leave you as you > were. > > Admittedly, getting PQconnectdbParams to return control on SIGINT > isn't too practical. But you could probably replace that with a loop > around PQconnectPoll and test for CancelRequested in the loop. That sounds like a much better solution. Attached you will find a v4 that implements your suggestion. Please let me know if there is something that I missed. I can confirm that the patch works. $ ./build/src/bin/psql/psql -h pg.neon.tech NOTICE: Welcome to Neon! Authenticate by visiting: https://console.neon.tech/psql_session/xxx NOTICE: Connecting to database. psql (17devel, server 15.3) SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off) Type "help" for help. tristan957=> \c NOTICE: Welcome to Neon! Authenticate by visiting: https://console.neon.tech/psql_session/yyy ^Cconnection to server at "pg.neon.tech" (3.18.6.96), port 5432 failed: Previous connection kept tristan957=> -- Tristan Partin Neon (https://neon.tech)
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix old, misleading comment for PGRES_POLLING_ACTIVE.
- e57fe3824ee7 17.0 landed
-
Remove reachable call to pg_unreachable().
- 12b964d7815b 17.0 landed
-
Allow SIGINT to cancel psql database reconnections.
- cafe1056558f 17.0 landed
-
Expose PQsocketPoll via libpq
- f5e4dedfa81f 17.0 landed
-
Fix query cancellation handling in psql
- 5d43c3c54d77 13.0 cited