Re: Transaction timeout

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Andrey Borodin <amborodin86@gmail.com>, Nathan Bossart <nathandbossart@gmail.com>
Cc: Andres Freund <andres@anarazel.de>, Michael Paquier <michael.paquier@gmail.com>, Nikolay Samokhvalov <samokhvalov@gmail.com>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2023-09-01T20:23:07Z
Lists: pgsql-hackers
On 12.01.23 20:46, Andrey Borodin wrote:
>> On Sun, Dec 18, 2022 at 12:53:31PM -0800, Andrey Borodin wrote:
>>> I've rewritten this part to correctly report all timeouts that did
>>> happen. However there's now a tricky comma-formatting code which was
>>> tested only manually.
>> I suspect this will make translation difficult.
> I use special functions for this like _()
> 
> char* lock_reason = lock_timeout_occurred ? _("lock timeout") : "";
> 
> and then
> ereport(ERROR, (errcode(err_code),
>   errmsg("canceling statement due to %s%s%s%s%s", lock_reason, comma1,
>   stmt_reason, comma2, tx_reason)));
> 
> I hope it will be translatable...

No, you can't do that.  You have to write out all the strings separately.



Commits

  1. Add TAP tests for timeouts

  2. Remove flaky isolation tests for timeouts

  3. Followup fixes for transaction_timeout

  4. Introduce transaction_timeout

  5. On systems that have setsid(2) (which should be just about everything except