postgresql/src
Andrew Dunstan 14c15b1f45 Fix walsender timeouts when decoding a large transaction
The logical slots have a fast code path for sending data so as not to
impose too high a per message overhead. The fast path skips checks for
interrupts and timeouts. However, the existing coding failed to consider
the fact that a transaction with a large number of changes may take a
very long time to be processed and sent to the client. This causes the
walsender to ignore interrupts for potentially a long time and more
importantly it will result in the walsender being killed due to
timeout at the end of such a transaction.

This commit changes the fast path to also check for interrupts and only
allows calling the fast path when the last keepalive check happened less
than half the walsender timeout ago. Otherwise the slower code path will
be taken.

Backpatched to 9.4

Petr Jelinek, reviewed by  Kyotaro HORIGUCHI, Yura Sokolov,  Craig
Ringer and Robert Haas.

Discussion: https://postgr.es/m/e082a56a-fd95-a250-3bae-0fff93832510@2ndquadrant.com
2017-12-14 11:29:34 -05:00
..
backend Fix walsender timeouts when decoding a large transaction 2017-12-14 11:29:34 -05:00
bin Fix bogus logic for checking data dirs' versions within pg_upgrade. 2017-11-16 11:16:53 -05:00
common Update copyright in recently added files 2017-07-26 18:17:18 -04:00
fe_utils Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
include Mark assorted variables PGDLLIMPORT. 2017-12-05 09:24:05 -05:00
interfaces Add post-2010 ecpg tests to checktcp. 2017-11-11 14:35:36 -08:00
makefiles Always use -fPIC, not -fpic, when building shared libraries with gcc. 2017-06-01 13:32:55 -04:00
pl Support linking with MinGW-built Perl. 2017-11-23 20:22:24 -08:00
port Stamp 10.1. 2017-11-06 17:06:17 -05:00
template Remove "sco" and "unixware" ports. 2016-10-11 11:26:04 -04:00
test Revert "Fix accumulation of parallel worker instrumentation." 2017-12-13 15:57:21 -05:00
timezone Replace raw timezone source data with IANA's new compact format. 2017-11-25 15:30:27 -05:00
tools MSVC 2012+: Permit linking to 32-bit, MinGW-built libraries. 2017-12-09 00:58:58 -08:00
tutorial Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
.gitignore Convert cvsignore to gitignore, and add .gitignore for build targets. 2010-09-22 12:57:04 +02:00
DEVELOPERS Replace a couple of references to files that no longer exist in the source 2009-05-04 08:08:47 +00:00
Makefile Build src/test/isolation during "make" and "make install". 2017-11-22 20:18:52 -08:00
Makefile.global.in Be more thorough about cleaning out gcov litter. 2017-08-11 17:39:27 -04:00
Makefile.shlib Remove support for bcc and msvc standalone libpq builds 2017-04-11 15:22:21 +02:00
nls-global.mk nls-global.mk: search build dir for source files, too 2016-06-07 18:55:18 -04:00