From: | Andres Freund <andres(at)anarazel(dot)de> |
---|---|
To: | pgsql-committers(at)postgresql(dot)org |
Subject: | pgsql: Don't include low level locking code from frontend code. |
Date: | 2015-08-07 13:13:44 |
Message-ID: | E1ZNhSy-0006zU-35@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Don't include low level locking code from frontend code.
Some frontend code like e.g. pg_xlogdump or pg_resetxlog, has to use
backend headers. Unfortunately until now that code includes most of the
locking code. It's generally not nice to expose such low level details,
but de6fd1c898 made that a hard problem. We fall back to defining
'inline' away if the compiler doesn't support it - that can cause linker
errors like on buildfarm animal pademelon if a inline function
references backend only code.
To fix that problem separate definitions from lock.h that are required
from frontend code into lockdefs.h and use it in the relevant
places. I've only removed the minimal amount of necessary definitions
for now - it might turn out that we want more for other reasons.
To avoid such details being exposed again put some checks against being
included from frontend code into atomics.h, lock.h, lwlock.h and
s_lock.h. It's otherwise fairly easy to indirectly include these
headers.
Discussion: 20150806070902(dot)GE12214(at)awork2(dot)anarazel(dot)de
Branch
------
master
Details
-------
http://git.postgresql.org/pg/commitdiff/4eda0a64705763854225a29703b606692af50e77
Modified Files
--------------
src/backend/utils/hash/hashfn.c | 1 +
src/include/access/genam.h | 2 +-
src/include/access/hash.h | 2 +-
src/include/access/tuptoaster.h | 2 +-
src/include/catalog/objectaddress.h | 2 +-
src/include/port/atomics.h | 4 +++
src/include/storage/lock.h | 43 ++++-----------------------
src/include/storage/lockdefs.h | 56 +++++++++++++++++++++++++++++++++++
src/include/storage/lwlock.h | 4 +++
src/include/storage/procarray.h | 1 +
src/include/storage/s_lock.h | 4 +++
src/include/storage/standby.h | 2 +-
12 files changed, 80 insertions(+), 43 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Robert Haas | 2015-08-07 14:08:40 | pgsql: Fix attach-related race condition in shm_mq_send_bytes. |
Previous Message | Andres Freund | 2015-08-07 13:13:39 | pgsql: Address points made in post-commit review of replication origins |