Re: Invalid primary_slot_name triggers warnings in all processes on reload

Поиск
Список
Период
Сортировка
От Fujii Masao
Тема Re: Invalid primary_slot_name triggers warnings in all processes on reload
Дата
Msg-id CAHGQGwG+HavJUdqj8e8LdOQnTC8JXTWzu9csSFpTEBQSyOVJkw@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Invalid primary_slot_name triggers warnings in all processes on reload  (Chao Li <li.evan.chao@gmail.com>)
Ответы Re: Invalid primary_slot_name triggers warnings in all processes on reload
Re: Invalid primary_slot_name triggers warnings in all processes on reload
Список pgsql-hackers
On Fri, Sep 19, 2025 at 8:21 AM Chao Li <li.evan.chao@gmail.com> wrote:
>
>
>
> On Sep 19, 2025, at 00:48, Fujii Masao <masao.fujii@gmail.com> wrote:
>
> Fujii Masao
> <v2-0001-Make-invalid-primary_slot_name-follow-standard-GU.patch>
>
>
> ```
> +error:
> + if (elevel == 0)
> + {
> + GUC_check_errdetail("%s", err_msg);
> + if (err_hint != NULL)
> + GUC_check_errhint("%s", err_hint);
> + }
> + else
> + ereport(elevel,
> + (errcode(err_code),
> + errmsg("%s", err_msg),
> + (err_hint != NULL) ? errhint("%s", err_hint) : 0));
> +
> + return false;
> ```
>
> Do we need to free memory pointed by err_msg and err_hint that were allocated from psprintf()? The code comment of
psprintf()says caller is responsible for free the memory. 

Thanks for the review!

I had thought that since the short-lived "config file processing" memory context
is used when processing the configuration file and then freed afterward,
there was no need for ReplicationSlotValidateName() to call pfree().
However, when it's called by StartupReorderBuffer() with elevel = DEBUG2,
allocations seem to be made in TopMemoryContext, so they could persist
much longer.

So I agree it's safer to free them explicitly. In the attached updated patch,
ReplicationSlotValidateName() now pfrees err_msg and err_hint when needed.

Regards,

--
Fujii Masao

Вложения

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