Re: Non-superuser subscription owners

Поиск
Список
Период
Сортировка
От Mark Dilger
Тема Re: Non-superuser subscription owners
Дата
Msg-id 568C890F-C554-4A94-B6D1-341610121E03@enterprisedb.com
обсуждение исходный текст
Ответ на Re: Non-superuser subscription owners  (Amit Kapila <amit.kapila16@gmail.com>)
Ответы Re: Non-superuser subscription owners  (Amit Kapila <amit.kapila16@gmail.com>)
Список pgsql-hackers

> On Nov 18, 2021, at 3:37 AM, Amit Kapila <amit.kapila16@gmail.com> wrote:
>
>> I have rethought my prior analysis.  The problem in the previous patch was that the subscription apply workers did
notcheck for a change in ownership the way they checked for other changes, instead only picking up the new ownership
informationwhen the worker restarted for some other reason.  This next patch set fixes that.  The application of a
changerecord may continue under the old ownership permissions when a concurrent command changes the ownership of the
subscription,but the worker will pick up the new permissions before applying the next record. 
>>
>
> Are you talking about the below change in the above paragraph?
>
> @@ -2912,6 +2941,7 @@ maybe_reread_subscription(void)
>  strcmp(newsub->slotname, MySubscription->slotname) != 0 ||
>  newsub->binary != MySubscription->binary ||
>  newsub->stream != MySubscription->stream ||
> + newsub->owner != MySubscription->owner ||
>  !equal(newsub->publications, MySubscription->publications))
>  {
>
> If so, I am not sure how it will ensure that we check the ownership
> change before applying each change? I think this will be invoked at
> each transaction boundary, so, if there is a transaction with a large
> number of changes, all the changes will be processed under the
> previous owner.

Yes, your analysis appears correct.  I was sloppy to say "before applying the next record".  It will pick up the change
beforeapplying the next transaction. 

The prior version of the patch only picked up the change if it happened to start a new worker, but could process
multipletransactions without noticing the change.  Now, it is limited to finishing the current transaction.  Would you
preferthat the worker noticed the change in ownership and aborted the transaction on the subscriber side?  Or should
theALTER SUBSCRIPTION..OWNER TO block?  I don't see much advantage to either of those options, but I also don't think I
haveany knock-down argument for my approach either.  What do you think? 

—
Mark Dilger
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company






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

Предыдущее
От: Mark Dilger
Дата:
Сообщение: Re: Non-superuser subscription owners
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Should rename "startup process" to something else?