public inbox for [email protected]
help / color / mirror / Atom feedFrom: David Barsky <[email protected]>
To: Ron Johnson <[email protected]>
Cc: pgsql-generallists.postgresql.org <[email protected]>
Subject: Re: Option on `postgres` CLI to shutdown when there are no more active connections?
Date: Tue, 14 Oct 2025 14:40:45 -0700
Message-ID: <CAPR5_5rvpF+vVnexG6CRoN6DNhM3RReQvuHNJC04OpgVujOArg@mail.gmail.com> (raw)
In-Reply-To: <CANzqJaBepwWOdD3dOJPMx8KdHaA3xMk8NA9ST5oCK2HUoyqvig@mail.gmail.com>
References: <CAPR5_5psNqCm1OQr5LL4v6z02Sh=2YHYUg8NY+3xMzfGHfKs+w@mail.gmail.com>
<[email protected]>
<CAPR5_5q2oCkw19rHb7oy-M0M0purWFM5Jc8ub5xDy_NdhUmRTw@mail.gmail.com>
<[email protected]>
<[email protected]>
<CAFCRh-94eXetAjtCURs5F0JZQr=kso0rVgVSEmWiSD7wA6VcMw@mail.gmail.com>
<CANzqJaDn_mVi4M0CbKnVNwK9RxYOneoCRmd_d69rbjBrwasuPQ@mail.gmail.com>
<CAFCRh--P93bF0gpkdvg4MzMNqq5gK=4eWFkmBDR0xw9dmFVAPQ@mail.gmail.com>
<[email protected]>
<CAFCRh--_14QR1_=vZvKVZkcA_1LRO-pQd2p6BBRMreyAv2_z6w@mail.gmail.com>
<CAPR5_5rRYkM9bO=KC_PY-Bj2Fw=t+maEYG+Am-UgaCHRTWyFsg@mail.gmail.com>
<CANzqJaBepwWOdD3dOJPMx8KdHaA3xMk8NA9ST5oCK2HUoyqvig@mail.gmail.com>
> If testing is all scripted, then why not put "pg_ctl stop" at the end of
the script?
Sorry for the delay.
It’s _mostly_ scripted, but two major reasons:
1. If that script is cancelled or interrupted for any reason, it’s possible
that
`pg_ctl stop` won't be called and I'd have a leaked process. I could
mitigate
this by calling `pg_ctl stop` at the *start* of the script, but that
adds a
bit of latency I'd prefer to avoid.
2. It's a pain to hook that script up to our IDEs in a semi-centralized
manner
(I extended rust-analyzer's test runner to support non-standard build
systems
and I never really got non-standard build systems working with
debuggers).
Even if we eat the pain, the aforementioned latency coming from `pg_ctl
stop`
is a bit annoying.
1. For context, rust-analyzer has a nice "runnables" feature that makes
it
possible to run a test directly from within an IDE. Other language
servers/IDEs have similar functionality, but they're heavily biased
to use
language-idiomatic tools and make it a pain to override build
tools/runnables. Besides, in my experience working on IDEs for a large
tech company (and collecting a _lot_ of logs/telemetry...), it's
_extremely_ rare for people to configure their editors: they're
overwhelmingly stock.
I'm also of the mind that there's some elegance to `pg_ctl start
--exit-mode=smart`: no matter how the test script is interrupted or
cancelled, I
can run it again and guarantee that there will be *no* leaked processes or
non-idempotency because the postmaster handles it. That said, looking over
the
`postmaster.c` source, it seems like there isn't any bookkeeping of children
starting/exiting, so there isn't really any reference counting of
connections
there. I'd be happy to add it, but I _do not_ trust myself to write correct
C!
Anyways, I think this relatively small tweak can make a pretty meaningful
impact
in the end-developer experience of programming against Postgres, especially
in
setups that would like to minimize cross-language scripting/dependencies.
However, I also understand that this isn't exactly how Postgres might be
commonly used on these mailing lists.
—David
On Oct 13, 2025 at 1:27:17 PM, Ron Johnson <[email protected]> wrote:
> On Mon, Oct 13, 2025 at 3:19 PM David Barsky <[email protected]> wrote:
> [snip]
>
>> Anyways, I'll try to get at what motivated this whole discussion: would
>> there be
>> community opposition to adding a CLI flag that'd exit/shutdown all
>> Postgres
>> processes once all pending connections close? E.g., something similar to
>> SQL
>> Server's `auto_close` in the vein of `postgres
>> -c "auto_close_after=100"` or `pg-ctl start --exit-mode=smart`?
>>
>
> If testing is all scripted, then why not put "pg_ctl stop" at the end of
> the script?
>
> --
> Death to <Redacted>, and butter sauce.
> Don't boil me, I'm still alive.
> <Redacted> lobster!
>
view thread (4+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected], [email protected]
Subject: Re: Option on `postgres` CLI to shutdown when there are no more active connections?
In-Reply-To: <CAPR5_5rvpF+vVnexG6CRoN6DNhM3RReQvuHNJC04OpgVujOArg@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox