On Thu, Nov 14, 2024 at 8:24 AM Zhijie Hou (Fujitsu) <houzj.f...@fujitsu.com> wrote: > > Attach the V9 patch set which addressed above comments. >
Reviewed v9 patch-set and here are my comments for below changes: @@ -1175,10 +1189,29 @@ ApplyLauncherMain(Datum main_arg) long elapsed; if (!sub->enabled) + { + can_advance_xmin = false; + xmin = InvalidFullTransactionId; continue; + } LWLockAcquire(LogicalRepWorkerLock, LW_SHARED); w = logicalrep_worker_find(sub->oid, InvalidOid, false); + + if (can_advance_xmin && w != NULL) + { + FullTransactionId nonremovable_xid; + + SpinLockAcquire(&w->relmutex); + nonremovable_xid = w->oldest_nonremovable_xid; + SpinLockRelease(&w->relmutex); + + if (!FullTransactionIdIsValid(xmin) || + !FullTransactionIdIsValid(nonremovable_xid) || + FullTransactionIdPrecedes(nonremovable_xid, xmin)) + xmin = nonremovable_xid; + } + 1) In Patch-0002, could you please add a comment above "+ if (can_advance_xmin && w != NULL)" to briefly explain the purpose of finding the minimum XID at this point? 2) In Patch-0004, with the addition of the 'detect_update_deleted' option, I see the following two issues in the above code: 2a) Currently, all enabled subscriptions are considered when comparing and finding the minimum XID, even if detect_update_deleted is disabled for some subscriptions. I suggest excluding the oldest_nonremovable_xid of subscriptions where detect_update_deleted=false by updating the check as follows: if (sub->detectupdatedeleted && can_advance_xmin && w != NULL) 2b) I understand why advancing xmin is not allowed when a subscription is disabled. However, the current check allows a disabled subscription with detect_update_deleted=false to block xmin advancement, which seems incorrect. Should the check also account for detect_update_deleted?, like : if (sub->detectupdatedeleted && !sub->enabled) + { + can_advance_xmin = false; + xmin = InvalidFullTransactionId; continue; + } However, I'm not sure if this is the right fix, as it could lead to inconsistencies if the detect_update_deleted is set to false after disabling the sub. Thoughts? -- Thanks, Nisha