On Thu, Nov 4, 2021 at 1:20 AM Mark Dilger <mark.dil...@enterprisedb.com> wrote:
>
> > On Nov 1, 2021, at 10:58 AM, Mark Dilger <mark.dil...@enterprisedb.com> 
> > wrote:
> >
> > ALTER SUBSCRIPTION..[ENABLE | DISABLE] do not synchronously start or stop 
> > subscription workers.  The ALTER command updates the catalog's subenabled 
> > field, but workers only lazily respond to that.  Disabling and enabling the 
> > subscription as part of the OWNER TO would not reliably accomplish anything.
>
> I have rethought my prior analysis.  The problem in the previous patch was 
> that the subscription apply workers did not check for a change in ownership 
> the way they checked for other changes, instead only picking up the new 
> ownership information when the worker restarted for some other reason.  This 
> next patch set fixes that.  The application of a change record 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.

-- 
With Regards,
Amit Kapila.


Reply via email to