diff options
author | Noah Misch <noah@leadboat.com> | 2024-11-02 09:04:56 -0700 |
---|---|---|
committer | Noah Misch <noah@leadboat.com> | 2024-11-02 09:04:56 -0700 |
commit | 0bada39c83a150079567a6e97b1a25a198f30ea3 (patch) | |
tree | 291571016e3d1a08249f25a9eefff51a47d89ec8 /doc/src | |
parent | b412f402d1e020c5dac94f3bf4a005db69519b99 (diff) | |
download | postgresql-0bada39c83a150079567a6e97b1a25a198f30ea3.tar.gz postgresql-0bada39c83a150079567a6e97b1a25a198f30ea3.zip |
Fix inplace update buffer self-deadlock.
A CacheInvalidateHeapTuple* callee might call
CatalogCacheInitializeCache(), which needs a relcache entry. Acquiring
a valid relcache entry might scan pg_class. Hence, to prevent
undetected LWLock self-deadlock, CacheInvalidateHeapTuple* callers must
not hold BUFFER_LOCK_EXCLUSIVE on buffers of pg_class. Move the
CacheInvalidateHeapTupleInplace() before the BUFFER_LOCK_EXCLUSIVE. No
back-patch, since I've reverted commit
243e9b40f1b2dd09d6e5bf91ebf6e822a2cd3704 from non-master branches.
Reported by Alexander Lakhin. Reviewed by Alexander Lakhin.
Discussion: https://postgr.es/m/10ec0bc3-5933-1189-6bb8-5dec4114558e@gmail.com
Diffstat (limited to 'doc/src')
0 files changed, 0 insertions, 0 deletions