On Mon, 26 Oct 2026 at 11:42, Roman Khapov <[email protected]> wrote:
>
> Hi hackers!

Hi

> While working on [1] or [2] I sometimes use pgbench in short-run mode:
> see if there is some performance improvements or degradation for 5-10 seconds,
> press CTRL+C, make some code changes and repeat the measurements.
>
> For now, pgbench prints nothing on CTRL+C, which hides the run statistics
> from user. What if it printed the collected statistics anyway, along with the
> existing 'Run was aborted; the above results are incomplete.' message?
>
> Attached POC-patch does:
> - on first SIGINT stops accepting new transactions, discards the in-flight 
> ones
>   and print the summary as usual, exiting with status 130
> - on second SIGINT fallbacks to standard handler immediately
> - caps all wait at one second, so the SIGINT can interrupt the \sleep

I think this enhances UX for manual testing/measurements, so overall
im +1 on this.  Double ctrl^C kills pgbench instantly which I think is
good decision.

There is  however a small bug where  workers can submit new commands
after the stop flag is set.
The flag is checked once at the top of the outer threadRun loop, but a
worker whose EINTR check was missed can go through a full iteration of
the state machine after the flag changes. This can make a few
transactions to reach the server. Maybe we should check
aborted_by_sigint in more places

> For now I am not sure about exit code..


There was an earlier related thread "Make pgbench exit on SIGINT more
reliably" [0] which may contain useful context on Windows handling.

[0] https://www.postgresql.org/message-id/CSSWBAX56CVY.291H6ZNNHK7EO@c3po



-- 
Best regards,
Kirill Reshke


Reply via email to