RE: Non-superuser subscription owners

Поиск
Список
Период
Сортировка
От houzj.fnst@fujitsu.com
Тема RE: Non-superuser subscription owners
Дата
Msg-id OS0PR01MB5716E596E4FB83DE46F592FE948C9@OS0PR01MB5716.jpnprd01.prod.outlook.com
обсуждение исходный текст
Ответ на Re: Non-superuser subscription owners  (Robert Haas <robertmhaas@gmail.com>)
Список pgsql-hackers
On Saturday, April 1, 2023 4:00 AM Robert Haas <robertmhaas@gmail.com>

Hi,

> 
> On Thu, Mar 30, 2023 at 9:49 PM houzj.fnst@fujitsu.com
> <houzj.fnst@fujitsu.com> wrote:
> > It looks like the super user check is out of a transaction, I haven't
> > checked why it only failed on one BF animal, but it seems we can put
> > the check into the transaction like the following:
> 
> That looks like a reasonable fix but I can't reproduce the problem locally. I
> thought the reason why that machine sees the problem might be that it uses
> -DRELCACHE_FORCE_RELEASE, but I tried that option here and the tests still pass.
> Anyone ideas how to reproduce?

I think it's a timing problem because superuser_arg() function will cache the
roleid that passed in last time, so it might not search the syscache to hit the
Assert() check each time. And in the regression test, the roleid cache happened
to be invalidated before the superuser_arg() by some concurrently ROLE change(
maybe in subscription.sql and publication.sql).

I can reproduce it by using gdb and starting another session to change the ROLE.

When the apply worker starts, use the gdb to block the apply worker in the
transaction before the super user check. Then start another session to ALTER
ROLE to invalidate the roleid cache in superuser_arg() which will cause the
apply worker to search the syscache and hit the Assert().

--
        origin_startpos = replorigin_session_get_progress(false);
B*        CommitTransactionCommand();

        /* Is the use of a password mandatory? */
        must_use_password = MySubscription->passwordrequired &&
            ! superuser_arg(MySubscription->owner);
--

Best Regards,
Hou zj

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

Предыдущее
От: Thomas Munro
Дата:
Сообщение: WL_SOCKET_ACCEPT fairness on Windows
Следующее
От: Andres Freund
Дата:
Сообщение: Re: WL_SOCKET_ACCEPT fairness on Windows