Re: walsender: Assert MyReplicationSlot is set before use

Поиск
Список
Период
Сортировка
От Chao Li
Тема Re: walsender: Assert MyReplicationSlot is set before use
Дата
Msg-id 88C565BD-A1F9-476E-B936-F7CE39A71408@gmail.com
обсуждение исходный текст
Ответ на Re: walsender: Assert MyReplicationSlot is set before use  (vignesh C <vignesh21@gmail.com>)
Список pgsql-hackers

> On Feb 2, 2026, at 14:41, vignesh C <vignesh21@gmail.com> wrote:
>
> On Mon, 2 Feb 2026 at 11:55, Chao Li <li.evan.chao@gmail.com> wrote:
>>
>> Hi Hackers,
>>
>> While reviewing patch [1], I noticed that in walsender.c, the function NeedToWaitForStandbys() dereferences
MyReplicationSlot->data.failoverwithout first checking whether MyReplicationSlot is NULL. 
>>
>> Looking at the call chain:
>> ```
>> logical_read_xlog_page() // XLogReaderRoutine->page_read callback
>> -> WalSndWaitForWal()
>>    -> NeedToWaitForWal()
>>       -> NeedToWaitForStandbys()
>> ```
>>
>> None of these callers explicitly checks whether MyReplicationSlot is NULL. Since they also don’t dereference
MyReplicationSlotthemselves, it wouldn’t be fair to push that responsibility up to the callers. 
>>
>> Looking elsewhere in the codebase, other places that dereference MyReplicationSlot (for example
CreateReplicationSlot())either do an explicit if (MyReplicationSlot != NULL) check or assert MyReplicationSlot != NULL.
Soit seems reasonable to make the assumption explicit by adding an Assert(MyReplicationSlot) in
NeedToWaitForStandbys().
>>
>> Another related issue is in StartLogicalReplication(): the function initially asserts MyReplicationSlot == NULL,
thencalls ReplicationSlotAcquire(), which is expected to set up MyReplicationSlot. Since MyReplicationSlot is
dereferencedlater in this function, I think it would be clearer and safer to add an Assert(MyReplicationSlot != NULL)
immediatelyafter the call to ReplicationSlotAcquire(). 
>>
>> The attached patch addresses both of these points.
>
> You have forgotten to attach the patch.
>
> Regards,
> Vignesh

Oops, here comes it. Thanks for the reminder.

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/





Вложения

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