postgresql/src/backend
Heikki Linnakangas e0d97d77bf Fix deadlock with LWLockAcquireWithVar and LWLockWaitForVar.
LWLockRelease should release all backends waiting with LWLockWaitForVar,
even when another backend has already been woken up to acquire the lock,
i.e. when releaseOK is false. LWLockWaitForVar can return as soon as the
protected value changes, even if the other backend will acquire the lock.
Fix that by resetting releaseOK to true in LWLockWaitForVar, whenever
adding itself to the wait queue.

This should fix the bug reported by MauMau, where the system occasionally
hangs when there is a lot of concurrent WAL activity and a checkpoint.
Backpatch to 9.4, where this code was added.
2014-10-14 10:06:47 +03:00
..
access Message improvements 2014-10-12 01:06:35 -04:00
bootstrap Revert "Fix bogus %name-prefix option syntax in all our Bison files." 2014-05-28 19:21:01 -04:00
catalog Split builtins.h to a new header ruleutils.h 2014-10-08 18:10:47 -03:00
commands Increase number of hash join buckets for underestimate. 2014-10-13 10:16:36 -05:00
executor C comments: adjust execTuples.c for new structure 2014-10-13 16:54:38 -04:00
foreign Implement IMPORT FOREIGN SCHEMA. 2014-07-10 15:01:43 -04:00
lib pgindent run for 9.4 2014-05-06 12:12:18 -04:00
libpq Message improvements 2014-10-12 01:06:35 -04:00
main Add a basic atomic ops API abstracting away platform/architecture details. 2014-09-25 23:49:05 +02:00
nodes Implement SKIP LOCKED for row-level locks 2014-10-07 17:23:34 -03:00
optimizer Implement SKIP LOCKED for row-level locks 2014-10-07 17:23:34 -03:00
parser Implement SKIP LOCKED for row-level locks 2014-10-07 17:23:34 -03:00
po Translation updates 2014-10-05 23:23:50 -04:00
port Add a basic atomic ops API abstracting away platform/architecture details. 2014-09-25 23:49:05 +02:00
postmaster Eliminate one background-worker-related flag variable. 2014-10-04 21:25:41 -04:00
regex Fix incorrect search for "x?" style matches in creviterdissect(). 2014-09-23 20:26:14 -04:00
replication Improve documentation about binary/textual output mode for output plugins. 2014-10-01 13:22:17 +02:00
rewrite Implement SKIP LOCKED for row-level locks 2014-10-07 17:23:34 -03:00
snowball Finish adding file version information to installed Windows binaries. 2014-08-18 22:59:53 -04:00
storage Fix deadlock with LWLockAcquireWithVar and LWLockWaitForVar. 2014-10-14 10:06:47 +03:00
tcop Log ALTER SYSTEM statements as DDL 2014-09-22 20:50:17 -04:00
tsearch pgindent run for 9.4 2014-05-06 12:12:18 -04:00
utils Consistently use NULL for invalid GUC unit strings 2014-10-13 16:11:43 -04:00
.gitignore Add gitignore for mingw/cygwin build outputs 2011-06-09 18:11:47 +02:00
common.mk Remove maintainer-check target, fold into normal build 2013-10-10 20:11:56 -04:00
Makefile Get rid of use of dlltool in Mingw builds. 2014-02-11 12:56:20 -05:00
nls.mk Add libpgcommon to backend gettext source files 2013-10-19 13:49:05 -04:00