public inbox for [email protected]
help / color / mirror / Atom feedFrom: [email protected]
To: Quentin de Metz <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Subject: Re: SET transaction_timeout inside a transaction
Date: Sat, 20 Sep 2025 10:41:01 +0500
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
References: <[email protected]>
On 20 Sep 2025, at 1:12, Quentin de Metz wrote:
> It appears that changing the transaction_timeout when inside a transaction does not work as expected.
>
> Running the following script on master:
>
> SET transaction_timeout = '1s';
> BEGIN;
> SET transaction_timeout = '3s';
> SELECT pg_sleep(2);
>
> Fails with the following:
>
> FATAL: terminating connection due to transaction timeout
> server closed the connection unexpectedly
> This probably means the server terminated abnormally
> before or while processing the request.
>
> A workaround is to "SET transaction_timeout = 0" before each override. But this resets the timer, which may not be aligned with this parameter's intention.
>
Hi Quentin!
Thanks for raising this, it's very good to hear more about usage patterns, it really helps to improve.
Together with reviewers we did consider "extending" transaction timeout. But the problem is it promotes very unreliable coding pattern: adjusting time budget without checking how many time is already spent.
Yes, if expectations of your transaction changed you can reset transaction_timeout and set new time budget. Personally, I don't like it either. But it did not seem a good idea to forbid resetting timeout at all or to forbid setting it amid of a transaction: we needed both this functionalities for "SET transaction_timeout = x;" to work.
It's hard to change anything radically in shipped feature. But, if possible, please, tell more about usage patterns beyond pg_sleep(), maybe our assumptions were not accurate enough and we could do better in future.
Best regards, Andrey Borodin.
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], [email protected], [email protected], [email protected]
Subject: Re: SET transaction_timeout inside a transaction
In-Reply-To: <[email protected]>
* 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