Introduce transaction_timeout
authorAlexander Korotkov <akorotkov@postgresql.org>
Thu, 15 Feb 2024 21:34:11 +0000 (23:34 +0200)
committerAlexander Korotkov <akorotkov@postgresql.org>
Thu, 15 Feb 2024 21:56:12 +0000 (23:56 +0200)
commit51efe38cb92f4b15b68811bcce9ab878fbc71ea5
treed51bcdea74cd327444b5a00632a951b5b82baa48
parent5c9f2f9398b46a283dcdf4366aaeb06eb04aa76a
Introduce transaction_timeout

This commit adds timeout that is expected to be used as a prevention
of long-running queries. Any session within the transaction will be
terminated after spanning longer than this timeout.

However, this timeout is not applied to prepared transactions.
Only transactions with user connections are affected.

Discussion: https://postgr.es/m/CAAhFRxiQsRs2Eq5kCo9nXE3HTugsAAJdSQSmxncivebAxdmBjQ%40mail.gmail.com
Author: Andrey Borodin <amborodin@acm.org>
Author: Japin Li <japinli@hotmail.com>
Author: Junwang Zhao <zhjwpku@gmail.com>
Reviewed-by: Nikolay Samokhvalov <samokhvalov@gmail.com>
Reviewed-by: Andres Freund <andres@anarazel.de>
Reviewed-by: Fujii Masao <masao.fujii@oss.nttdata.com>
Reviewed-by: bt23nguyent <bt23nguyent@oss.nttdata.com>
Reviewed-by: Yuhang Qiu <iamqyh@gmail.com>
23 files changed:
doc/src/sgml/config.sgml
src/backend/access/transam/xact.c
src/backend/postmaster/autovacuum.c
src/backend/storage/lmgr/proc.c
src/backend/tcop/postgres.c
src/backend/utils/errcodes.txt
src/backend/utils/init/globals.c
src/backend/utils/init/postinit.c
src/backend/utils/misc/guc_tables.c
src/backend/utils/misc/postgresql.conf.sample
src/bin/pg_dump/pg_backup_archiver.c
src/bin/pg_dump/pg_dump.c
src/bin/pg_rewind/libpq_source.c
src/include/miscadmin.h
src/include/storage/proc.h
src/include/utils/guc_hooks.h
src/include/utils/timeout.h
src/test/isolation/Makefile
src/test/isolation/expected/timeouts-long.out [new file with mode: 0644]
src/test/isolation/expected/timeouts.out
src/test/isolation/isolation_schedule
src/test/isolation/specs/timeouts-long.spec [new file with mode: 0644]
src/test/isolation/specs/timeouts.spec