Re: [PROPOSAL] Termination of Background Workers for ALTER/DROP DATABASE

Поиск
Список
Период
Сортировка
От Pavel Stehule
Тема Re: [PROPOSAL] Termination of Background Workers for ALTER/DROP DATABASE
Дата
Msg-id CAFj8pRCRnN4SyZDPbQwTyKZ_kVHfwLG6udCXsXDTG_z9fWwYQg@mail.gmail.com
обсуждение исходный текст
Ответ на RE: [PROPOSAL] Termination of Background Workers for ALTER/DROP DATABASE  ("Aya Iwata (Fujitsu)" <iwata.aya@fujitsu.com>)
Список pgsql-hackers


po 15. 12. 2025 v 13:56 odesílatel Aya Iwata (Fujitsu) <iwata.aya@fujitsu.com> napsal:
Hi

Thank you for your review.

> From: Pavel Stehule <pavel.stehule@gmail.com>
> Sent: Sunday, December 14, 2025 4:40 PM
> To: Michael Paquier <michael@paquier.xyz>
> Cc: Iwata, Aya/岩田 彩 <iwata.aya@fujitsu.com>; Peter Smith <smithpb2250@gmail.com>; Chao Li <li.evan.chao@gmail.com>; Kuroda, Hayato/黒田 隼人 <kuroda.hayato@fujitsu.com>; pgsql-hackers <pgsql-hackers@postgresql.org>
> Subject: Re: [PROPOSAL] Termination of Background Workers for ALTER/DROP DATABASE
>
> +#define BGWORKER_EXIT_AT_DATABASE_CHANGE       0x0004
>
> I am checking this patch, and I think so used names can be little bit confusing
>
> BGWORKER_EXIT_AT_DATABASE_CHANGE - it is used for disconnecting workers on the template database, and this database is not changing.
>
> TerminateBgWorkersByDbOid - it doesn't terminate all workers, but only workers with some special flags
>
> Maybe BGWORKER_INTERRUPTABLE and TerminateInterruptableBgWorkersByDbOid ?

Thank you for your advice.
I changed the name of a function and a flag.

> Another question is if this cancellation should be implicit and should not require some special flag.
>
> When I want to disconnect connections to database when I do drop, I have to use FORCE flag
>
> So maybe there should be ALTER DATABASE ... RENAME ... FORCE - or if FORCE can terminare all workers (without special FLAG) ?

For the proposed feature, we've added a flag allowing each extension developer to decide whether to terminate it via DROP/ALTER DATABASE.
Adding a FORCE option to ALTER to let database definition modifiers decide whether to force termination of background workers might be better discussed in a separate thread.

When I thought about it - there can be a second alternative.

Introduce a pair of flags BGWORKER_INTERRUPTABLE and BGWORKER_PROTECTED (the names can be enhanced or changed). BGWORKER_INTERRUPTABLE can be default. 
ALTER DATABASE RENAME and related commands can stop any non protected workers. ALTER DATABASE RENAME FORCE can stop any workers (including protected). 

Is there any reason why BGWORKER_INTERRUPTABLE cannot be default? Probably nobody would block some possibly common operations on database level without strong reason.

Regards

Pavel






Best Regards,
Aya Iwata

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