Acquire spinlock when updating 2PC slot data during logical decoding creation

Michael Paquier <michael@paquier.xyz>

Commit: 6f25e48774fe9302ca08dae07420df95998d792a
Author: Michael Paquier <michael@paquier.xyz>
Date: 2023-01-12T04:41:22Z
Releases: 15.2
Acquire spinlock when updating 2PC slot data during logical decoding creation

The creation of a logical decoding context in CreateDecodingContext()
updates some data of its slot for two-phase transactions if enabled by
the caller, but the code forgot to acquire a spinlock when updating
these fields like any other code paths.  This could lead to the read of
inconsistent data.

Oversight in a8fd13c.

Author: Sawada Masahiko
Discussion: https://postgr.es/m/CAD21AoAD8_fp47191LKuecjDd3DYhoQ4TaucFco1_TEr_jQ-Zw@mail.gmail.com
Backpatch-through: 15

Files

PathChange+/−
src/backend/replication/logical/logical.c modified +2 −0

Discussion