postgresql/src
Alvaro Herrera 6d2a9ae0ed Fix deadlock hazard in CREATE INDEX CONCURRENTLY
Multiple sessions doing CREATE INDEX CONCURRENTLY simultaneously are
supposed to be able to work in parallel, as evidenced by fixes in commit
c3d09b3bd2 specifically to support this case.  In reality, one of the
sessions would be aborted by a misterious "deadlock detected" error.

Jeff Janes diagnosed that this is because of leftover snapshots used for
system catalog scans -- this was broken by 8aa3e47510 keeping track of
(registering) the catalog snapshot.  To fix the deadlocks, it's enough
to de-register that snapshot prior to waiting.

Backpatch to 9.4, which introduced MVCC catalog scans.

Include an isolationtester spec that 8 out of 10 times reproduces the
deadlock with the unpatched code for me (Álvaro).

Author: Jeff Janes
Diagnosed-by: Jeff Janes
Reported-by: Jeremy Finzel
Discussion: https://postgr.es/m/CAMa1XUhHjCv8Qkx0WOr1Mpm_R4qxN26EibwCrj0Oor2YBUFUTg%40mail.gmail.com
2018-01-02 19:16:16 -03:00
..
backend Fix deadlock hazard in CREATE INDEX CONCURRENTLY 2018-01-02 19:16:16 -03: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 Perform a lot more sanity checks when freezing tuples. 2017-12-14 18:20:48 -08: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 Fix deadlock hazard in CREATE INDEX CONCURRENTLY 2018-01-02 19:16:16 -03: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