From: | Asim Praveen <pasim(at)vmware(dot)com> |
---|---|
To: | Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com> |
Cc: | Kyotaro Horiguchi <horikyota(dot)ntt(at)gmail(dot)com>, Masahiko Sawada <masahiko(dot)sawada(at)2ndquadrant(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>, Ashwin Agrawal <ashwinstar(at)gmail(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>, Simon Riggs <simon(at)2ndquadrant(dot)com>, "Xin (Shin) Zhang (Pivotal)" <xzhang(at)pivotal(dot)io> |
Subject: | Re: SyncRepLock acquired exclusively in default configuration |
Date: | 2020-08-28 11:06:09 |
Message-ID: | E4F1C5C8-A016-42C6-84B9-B6E468F768A6@vmware.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
> On 28-Aug-2020, at 7:03 AM, Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com> wrote:
>
> On 2020/08/27 15:59, Asim Praveen wrote:
>>
>> +1. May I suggest the following addition to the above comment (feel free to
>> rephrase / reject)?
>> "If sync_standbys_defined was being set from false to true and we observe it as
>> false, it ok to skip the wait. Replication was async and it is in the process
>> of being changed to sync, due to user request. Subsequent commits will observe
>> the change and start waiting.”
>
> Thanks for the suggestion! I'm not sure if it's worth adding this because
> it seems obvious thing. But maybe you imply that we need to comment
> why the lock is not necessary when sync_standbys_defined is false. Right?
> If so, what about updating the comments as follows?
>
> + * Since this routine gets called every commit time, it's important to
> + * exit quickly if sync replication is not requested. So we check
> + * WalSndCtl->sync_standbys_defined flag without the lock and exit
> + * immediately if it's false. If it's true, we need to check it again later
> + * while holding the lock, to check the flag and operate the sync rep
> + * queue atomically. This is necessary to avoid the race condition
> + * described in SyncRepUpdateSyncStandbysDefined(). On the other
> + * hand, if it's false, the lock is not necessary because we don't touch
> + * the queue.
Thank you for updating the comment. This looks better.
Asim
From | Date | Subject | |
---|---|---|---|
Next Message | Georgios Kokolatos | 2020-08-28 12:16:36 | Re: New default role- 'pg_read_all_data' |
Previous Message | Neha Sharma | 2020-08-28 10:16:37 | Re: PATCH: logical_work_mem and logical streaming of large in-progress transactions |