diff options
author | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2020-11-26 12:30:48 -0300 |
---|---|---|
committer | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2020-11-26 12:30:48 -0300 |
commit | dcfff74fb16622898a9d1df33e530f477caab095 (patch) | |
tree | 851a9e6824a4baa42c5355397f57c3196b09f6a5 /src/include/storage/proc.h | |
parent | 9fbc3f318d039c3e1e8614c38e40843cf8fcffde (diff) | |
download | postgresql-dcfff74fb16622898a9d1df33e530f477caab095.tar.gz postgresql-dcfff74fb16622898a9d1df33e530f477caab095.zip |
Restore lock level to update statusFlags
Reverts 27838981be9d (some comments are kept). Per discussion, it does
not seem safe to relax the lock level used for this; in order for it to
be safe, there would have to be memory barriers between the point we set
the flag and the point we set the trasaction Xid, which perhaps would
not be so bad; but there would also have to be barriers at the readers'
side, which from a performance perspective might be bad.
Now maybe this analysis is wrong and it *is* safe for some reason, but
proof of that is not trivial.
Discussion: https://postgr.es/m/20201118190928.vnztes7c2sldu43a@alap3.anarazel.de
Diffstat (limited to 'src/include/storage/proc.h')
-rw-r--r-- | src/include/storage/proc.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/include/storage/proc.h b/src/include/storage/proc.h index e75f6e81782..e77f76ae8a1 100644 --- a/src/include/storage/proc.h +++ b/src/include/storage/proc.h @@ -102,9 +102,9 @@ typedef enum * but its myProcLocks[] lists are valid. * * We allow many fields of this struct to be accessed without locks, such as - * statusFlags or delayChkpt. However, keep in mind that writing mirrored ones - * (see below) requires holding ProcArrayLock or XidGenLock in at least shared - * mode, so that pgxactoff does not change concurrently. + * delayChkpt and isBackgroundWorker. However, keep in mind that writing + * mirrored ones (see below) requires holding ProcArrayLock or XidGenLock in + * at least shared mode, so that pgxactoff does not change concurrently. * * Mirrored fields: * |