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);
|
||||
}
|
||||
|
||||
/*
|
||||
* 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
|
||||
* new worker.
|
||||
@ -1382,8 +1397,7 @@ reread_subscription(void)
|
||||
}
|
||||
|
||||
/* Check for other changes that should never happen too. */
|
||||
if (newsub->dbid != MySubscription->dbid ||
|
||||
strcmp(newsub->slotname, MySubscription->slotname) != 0)
|
||||
if (newsub->dbid != MySubscription->dbid)
|
||||
{
|
||||
elog(ERROR, "subscription %u changed unexpectedly",
|
||||
MyLogicalRepWorker->subid);
|
||||
|
Loading…
x
Reference in New Issue
Block a user