Michael Paquier <michael@paquier.xyz> writes:
>> + LWLockAcquire(ProcArrayLock, LW_EXCLUSIVE);
>> + MyProc->vacuumFlags |= PROC_IN_SAFE_IC;
>> + ProcGlobal->vacuumFlags[MyProc->pgxactoff] = MyProc->vacuumFlags;
>> + LWLockRelease(ProcArrayLock);
> I can't help noticing that you are repeating the same code pattern
> eight times. I think that this should be in its own routine, and that
> we had better document that this should be called just after starting
> a transaction, with an assertion enforcing that.
Do we really need exclusive lock on the ProcArray to make this flag
change? That seems pretty bad from a concurrency standpoint.
regards, tom lane