Re: Minimal logical decoding on standbys

Поиск
Список
Период
Сортировка
От Drouvot, Bertrand
Тема Re: Minimal logical decoding on standbys
Дата
Msg-id e6bb9055-1ae4-64d9-a34a-db141ce69712@gmail.com
обсуждение исходный текст
Ответ на Re: Minimal logical decoding on standbys  (Amit Kapila <amit.kapila16@gmail.com>)
Ответы Re: Minimal logical decoding on standbys  ("Drouvot, Bertrand" <bertranddrouvot.pg@gmail.com>)
Список pgsql-hackers
Hi,

On 4/3/23 7:35 AM, Amit Kapila wrote:
> On Mon, Apr 3, 2023 at 4:26 AM Jeff Davis <pgsql@j-davis.com> wrote:
>>
>> On Fri, 2023-03-31 at 02:50 -0700, Jeff Davis wrote:
>>> But if the ConditionVariableEventSleep() API is added, then I think
>>> we
>>> should change the non-recovery case to use a CV as well for
>>> consistency, and it would avoid the need for WalSndWakeup().
>>
>> It seems like what we ultimately want is for WalSndWakeup() to
>> selectively wake up physical and/or logical walsenders depending on the
>> caller. For instance:
>>
>>     WalSndWakeup(bool physical, bool logical)
>>
>> The callers:
>>
>>    * On promotion, StartupXLog would call:
>>      - WalSndWakeup(true, true)
>>    * XLogFlush/XLogBackgroundFlush/XLogWalRcvFlush would call:
>>      - WalSndWakeup(true, !RecoveryInProgress())
>>    * ApplyWalRecord would call:
>>      - WalSndWakeup(switchedTLI, switchedTLI || RecoveryInProgress())
>>
>> There seem to be two approaches to making that work:
>>
>> 1. Use two ConditionVariables, and WalSndWakeup would broadcast to one
>> or both depending on its arguments.
>>
>> 2. Have a "replicaiton_kind" variable in WalSnd (either set based on
>> MyDatabaseId==InvalidOid, or set at START_REPLICATION time) to indicate
>> whether it's a physical or logical walsender. WalSndWakeup would wake
>> up the right walsenders based on its arguments.
>>
>> #2 seems simpler at least for now. Would that work?
>>
> 
> Agreed, even Bertrand and myself discussed the same approach few
> emails above. BTW, if we have this selective logic to wake
> physical/logical walsenders and for standby's, we only wake logical
> walsenders at the time of  ApplyWalRecord() then do we need the new
> conditional variable enhancement being discussed, and if so, why?
> 

Thank you both for this new idea and discussion. In that case I don't think
we need the new CV API and the use of a CV anymore. As just said up-thread I'll submit
a new proposal with this new approach.

Regards,

-- 
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com



В списке pgsql-hackers по дате отправления:

Предыдущее
От: "Drouvot, Bertrand"
Дата:
Сообщение: Re: Minimal logical decoding on standbys
Следующее
От: Kyotaro Horiguchi
Дата:
Сообщение: Re: BUG #17877: Referencing a system column in a foreign key leads to incorrect memory access