> or whether the relfilenode should be re-checked after the snapshot is built
Holding the toast lock from the start deadlocks. A session that asks for AccessExclusiveLock gets an XID before it waits, and the decoding worker waits for all XIDs while it sets up. So the attached patch re-checks instead. Once the worker is set up it no longer waits for anyone, so the backend locks the toast table there and compares its relfilenode with the one the worker uses. If they differ, it starts a new worker. Nothing has been copied yet, so REPACK just carries on. 0002 adds a test to repack_toast.spec that fails without 0001. optional. Thanks, Shihao
v1-0001-Fix-REPACK-CONCURRENTLY-losing-updates-after-a-TO.patch
Description: Binary data
v1-0002-Test-TOAST-rewrite-during-REPACK-CONCURRENTLY-sta.patch
Description: Binary data
