Re: Race condition in FetchTableStates() breaks synchronization of subscription tables

Alexander Law <exclusion@gmail.com>

From: Alexander Lakhin <exclusion@gmail.com>
To: vignesh C <vignesh21@gmail.com>
Cc: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2024-02-08T18:00:01Z
Lists: pgsql-hackers
08.02.2024 12:25, vignesh C wrote:
> Yes, the wakeup call sent by the "CREATE SUBSCRIPTION" command was
> getting missed in this case. The wakeup call can be sent during
> subscription creation/modification and when the apply worker exits.
> WaitForReplicationWorkerAttach should not reset the latch here as it
> will end up delaying the apply worker to get started after 180 seconds
> timeout(DEFAULT_NAPTIME_PER_CYCLE). The attached patch does not reset
> the latch and lets ApplyLauncherMain to reset the latch and checks if
> any new worker or missing worker needs to be started.

Thank you for the updated patch!
I ran all the subscription tests in a loop (with the sleeps added as
before) and observed no failures and 180+ seconds duration.

Best regards,
Alexander



Commits

  1. Fix the missing table sync due to improper invalidation handling.