Handle change of slot name in logical replication apply
Since change of slot name is a supported operation, handle it more gracefully, instead of in the this-should-not-happen way. Author: Petr Jelinek <petr.jelinek@2ndquadrant.com>
This commit is contained in:
parent
70da87d334
commit
1116108c92
@ -1350,6 +1350,21 @@ reread_subscription(void)
|
|||||||
proc_exit(0);
|
proc_exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We need to make new connection to new slot if slot name has changed
|
||||||
|
* so exit here as well if that's the case.
|
||||||
|
*/
|
||||||
|
if (strcmp(newsub->slotname, MySubscription->slotname) != 0)
|
||||||
|
{
|
||||||
|
ereport(LOG,
|
||||||
|
(errmsg("logical replication worker for subscription \"%s\" will "
|
||||||
|
"restart because the replication slot name was changed",
|
||||||
|
MySubscription->name)));
|
||||||
|
|
||||||
|
walrcv_disconnect(wrconn);
|
||||||
|
proc_exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Exit if publication list was changed. The launcher will start
|
* Exit if publication list was changed. The launcher will start
|
||||||
* new worker.
|
* new worker.
|
||||||
@ -1382,8 +1397,7 @@ reread_subscription(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Check for other changes that should never happen too. */
|
/* Check for other changes that should never happen too. */
|
||||||
if (newsub->dbid != MySubscription->dbid ||
|
if (newsub->dbid != MySubscription->dbid)
|
||||||
strcmp(newsub->slotname, MySubscription->slotname) != 0)
|
|
||||||
{
|
{
|
||||||
elog(ERROR, "subscription %u changed unexpectedly",
|
elog(ERROR, "subscription %u changed unexpectedly",
|
||||||
MyLogicalRepWorker->subid);
|
MyLogicalRepWorker->subid);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user