Dear Sawada-san,
Thank you for making the patch! I'm still considering whether this approach is
correct, but I can put a comment to your patch anyway.
```
- Assert(!already_locked || LWLockHeldByMe(ProcArrayLock));
-
- if (!already_locked)
- LWLockAcquire(ProcArrayLock, LW_EXCLUSIVE);
+ Assert(LWLockHeldByMe(ProcArrayLock));
```
In this function, we regard that the ProcArrayLock has been already acquired as
exclusive mode and modify data. I think LWLockHeldByMeInMode() should be used
instead of LWLockHeldByMe().
I confirmed that there is only one caller that uses ReplicationSlotsComputeRequiredXmin(true)
and it acquires exclusive lock correctly, but it can avoid future bug.
Best Regards,
Hayato Kuroda
FUJITSU LIMITED