WalReceiverConn *wrconn;
bool must_use_password;
- /*
- * Disallow a concurrent REFRESH SEQUENCES while a sequence sync worker
- * for this subscription is still running. This avoids a race where the
- * publisher's sequence advances after the current worker has fetched its
- * value but before it marks the sequence READY. A user may then issue
- * another REFRESH SEQUENCES to synchronize the updated value. Since the
- * affected sequences are already in the INIT state, the running worker
- * has no indication that a new synchronization has been requested. It
- * would then apply the stale value it already fetched and mark the
- * sequence READY, causing the new synchronization request to be lost and
- * preventing the updated publisher values from being synchronized.
- */
- LWLockAcquire(LogicalRepWorkerLock, LW_SHARED);
- if (logicalrep_worker_find(WORKERTYPE_SEQUENCESYNC, sub->oid, InvalidOid,
- true))
- {
- LWLockRelease(LogicalRepWorkerLock);
- ereport(ERROR,
- errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
- /* translator: %s is an SQL ALTER command */
- errmsg("cannot execute %s while a sequence synchronization worker is running",
- "ALTER SUBSCRIPTION ... REFRESH SEQUENCES"),
- errhint("Try again after the current synchronization completes."));
- }
-
- LWLockRelease(LogicalRepWorkerLock);
-
/* Load the library providing us libpq calls. */
load_file("libpqwalreceiver", false);
CREATE SEQUENCE regress_s4 START 10 INCREMENT 2;
));
-# Wait for the missing sequence added to be synced
-$node_subscriber->poll_query_until('postgres', $synced_query)
- or die "Timed out while waiting for subscriber to synchronize data";
-
##########
# Ensure that insufficient privileges on the publisher for a sequence
# are reported correctly as a permission issue, not as a missing sequence.