Andres Freund <and...@anarazel.de> writes: > To me it sounds like known_assigned_xids_lck is pointless and the talk about > memory barriers a red herring, since all modifications have to happen with > ProcArrayLock held exlusively and all reads with ProcArrayLock held in share > mode. It can't be legal to modify head/tail or the contents of the array > outside of that. And lwlocks provide sufficient barrier semantics.
No ... RecordKnownAssignedTransactionIds calls KnownAssignedXidsAdd with exclusive_lock = false, and in the typical case that will not acquire ProcArrayLock at all. Since there's only one writer, that seems safe enough, and I believe the commentary's claim that we really just need to be sure the head-pointer update is seen after the array updates. regards, tom lane