Re: Transaction timeout
Junwang Zhao <zhjwpku@gmail.com>
From: Junwang Zhao <zhjwpku@gmail.com>
To: Japin Li <japinli@hotmail.com>
Cc: "Andrey M. Borodin" <x4mmm@yandex-team.ru>, 邱宇航 <iamqyh@gmail.com>, Fujii Masao <masao.fujii@oss.nttdata.com>, Andrey Borodin <amborodin86@gmail.com>, Andres Freund <andres@anarazel.de>, Michael Paquier <michael.paquier@gmail.com>, Nikolay Samokhvalov <samokhvalov@gmail.com>, pgsql-hackers <pgsql-hackers@postgresql.org>, pgsql-hackers@lists.postgresql.org
Date: 2023-12-23T03:35:17Z
Lists: pgsql-hackers
On Sat, Dec 23, 2023 at 11:17 AM Japin Li <japinli@hotmail.com> wrote: > > a > On Sat, 23 Dec 2023 at 10:40, Japin Li <japinli@hotmail.com> wrote: > > On Sat, 23 Dec 2023 at 08:32, Japin Li <japinli@hotmail.com> wrote: > >> On Fri, 22 Dec 2023 at 23:30, Junwang Zhao <zhjwpku@gmail.com> wrote: > >>> On Fri, Dec 22, 2023 at 10:44 PM Japin Li <japinli@hotmail.com> wrote: > >>>> > >>>> > >>>> On Fri, 22 Dec 2023 at 22:37, Junwang Zhao <zhjwpku@gmail.com> wrote: > >>>> > On Fri, Dec 22, 2023 at 10:25 PM Japin Li <japinli@hotmail.com> wrote: > >>>> >> I try to set idle_in_transaction_session_timeout after begin transaction, > >>>> >> it changes immediately, so I think transaction_timeout should also be take > >>>> >> immediately. > >>>> > > >>>> > Ah, right, idle_in_transaction_session_timeout is set after the set > >>>> > command finishes and before the backend send *ready for query* > >>>> > to the client, so the value of the GUC is already set before > >>>> > next command. > >>>> > > >>>> > >>>> I mean, is it possible to set transaction_timeout before next comand? > >>>> > >>> Yeah, it's possible, set transaction_timeout in the when it first > >>> goes into *idle in transaction* mode, see the attached files. > >>> > >> > >> Thanks for updating the patch, LGTM. > > > > Sorry for the noise! > > > > Read the previous threads, I find why the author enable transaction_timeout > > in start_xact_command(). > > > > The v15 patch cannot handle COMMIT AND CHAIN, see [1]. For example: > > > > SET transaction_timeout TO '2s'; BEGIN; SELECT 1, pg_sleep(1); COMMIT AND CHAIN; SELECT 2, pg_sleep(1); COMMIT; > > > > The transaction_timeout do not reset when executing COMMIT AND CHAIN. > > > > [1] https://www.postgresql.org/message-id/a906dea1-76a1-4f26-76c5-a7efad3ef5b8%40oss.nttdata.com > > Attach v16 to solve this. Any suggestions? I've checked this with *COMMIT AND CHAIN* and *ABORT AND CHAIN*, both work as expected. Thanks for the update. > > -- > Regrads, > Japin Li > ChengDu WenWu Information Technology Co., Ltd. > -- Regards Junwang Zhao
Commits
-
Add TAP tests for timeouts
- eeefd4280f6e 17.0 landed
-
Remove flaky isolation tests for timeouts
- a661bf7b0f56 17.0 landed
-
Followup fixes for transaction_timeout
- bf82f43790a6 17.0 landed
-
Introduce transaction_timeout
- 51efe38cb92f 17.0 landed
-
On systems that have setsid(2) (which should be just about everything except
- 3ad0728c817b 8.2.0 cited