Dear Jeff,

> Can you explain in more detail the problem case? Is it unique to
> server-based subscriptions?

No, I initially thought that it could happen for both cases. But it seems no 
need to
consider - the invalidation messages can be accepted only at commit or while no
transactions are received. My worry that GetSubscription() and
GetSubscriptionConninfo() may refer the different tuple won't happen.

> Looking at the code it seems that invalidations can be missed if they
> come between the time the catalogs are read and the time that
> MySubscriptionValid is set. But I think that's a pre-existing issue --
> perhaps we should start a new thread about that?

I analyzed and I feel it's not problematic. Yes, if the ALTER SUBSCRIPTION 
DISABLE
is executed while in the maybe_reread_subscription(), it can be ignored once.
At the end of transaction or end of the loop, the invalidation message for the
subscription can be accepted and MySubscriptionValid can be false, the worker 
will
exit. This meant the worker can exit after handling the current transaction.

Best regards,
Hayato Kuroda
FUJITSU LIMITED

Reply via email to