On Wednesday, November 29, 2023 5:12 PM Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com> wrote:
I was reviewing slotsync worker design and here
are few comments on 0002 patch:
1.
+ if (!WalRcv ||
+ (WalRcv->slotname[0] == '\0') ||
+ XLogRecPtrIsInvalid(WalRcv->latestWalEnd))
I think we'd better take spinlock when accessing these shared memory fields.
2.
/*
* The slot sync feature itself is disabled, exit.
*/
if (!enable_syncslot)
{
ereport(LOG,
errmsg("exiting slot sync worker as enable_syncslot is disabled."));
Can we check the GUC when registering the worker(SlotSyncWorkerRegister),
so that the worker won't be started if enable_syncslot is false.
3. In synchronize_one_slot, do we need to skip the slot sync and drop if the
local slot is a physical one ?
4.
*locally_invalidated =
(remote_slot->invalidated == RS_INVAL_NONE) &&
(local_slot->data.invalidated != RS_INVAL_NONE);
When reading the invalidated flag of local slot, I think we'd better take
spinlock.
Best Regards,
Hou zj