mirror of
https://github.com/postgres/postgres.git
synced 2025-05-08 07:21:33 +03:00
Synchronize table list before creating slot in CREATE SUBSCRIPTION
This way a failure to synchronize the table list will not leave an unused slot on the publisher. Author: Petr Jelinek <petr.jelinek@2ndquadrant.com>
This commit is contained in:
parent
77c316be7e
commit
dcb39c37c1
@ -394,20 +394,6 @@ CreateSubscription(CreateSubscriptionStmt *stmt, bool isTopLevel)
|
|||||||
|
|
||||||
PG_TRY();
|
PG_TRY();
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
* If requested, create permanent slot for the subscription.
|
|
||||||
* We won't use the initial snapshot for anything, so no need
|
|
||||||
* to export it.
|
|
||||||
*/
|
|
||||||
if (create_slot)
|
|
||||||
{
|
|
||||||
walrcv_create_slot(wrconn, slotname, false,
|
|
||||||
CRS_NOEXPORT_SNAPSHOT, &lsn);
|
|
||||||
ereport(NOTICE,
|
|
||||||
(errmsg("created replication slot \"%s\" on publisher",
|
|
||||||
slotname)));
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set sync state based on if we were asked to do data copy or
|
* Set sync state based on if we were asked to do data copy or
|
||||||
* not.
|
* not.
|
||||||
@ -432,6 +418,20 @@ CreateSubscription(CreateSubscriptionStmt *stmt, bool isTopLevel)
|
|||||||
|
|
||||||
ereport(NOTICE,
|
ereport(NOTICE,
|
||||||
(errmsg("synchronized table states")));
|
(errmsg("synchronized table states")));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If requested, create permanent slot for the subscription.
|
||||||
|
* We won't use the initial snapshot for anything, so no need
|
||||||
|
* to export it.
|
||||||
|
*/
|
||||||
|
if (create_slot)
|
||||||
|
{
|
||||||
|
walrcv_create_slot(wrconn, slotname, false,
|
||||||
|
CRS_NOEXPORT_SNAPSHOT, &lsn);
|
||||||
|
ereport(NOTICE,
|
||||||
|
(errmsg("created replication slot \"%s\" on publisher",
|
||||||
|
slotname)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
PG_CATCH();
|
PG_CATCH();
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user