From 65df150a18d4a24e6870eb4a3db28ac8a6c23603 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut <peter_e@gmx.net> Date: Wed, 25 Jan 2017 10:47:53 -0500 Subject: [PATCH] Close replication connection when slot creation errors From: Petr Jelinek <pjmodos@pjmodos.net> --- src/backend/commands/subscriptioncmds.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/subscriptioncmds.c b/src/backend/commands/subscriptioncmds.c index 2b6d3225594..e0add949534 100644 --- a/src/backend/commands/subscriptioncmds.c +++ b/src/backend/commands/subscriptioncmds.c @@ -301,10 +301,20 @@ CreateSubscription(CreateSubscriptionStmt *stmt) ereport(ERROR, (errmsg("could not connect to the publisher: %s", err))); - walrcv_create_slot(wrconn, slotname, false, &lsn); - ereport(NOTICE, - (errmsg("created replication slot \"%s\" on publisher", - slotname))); + PG_TRY(); + { + walrcv_create_slot(wrconn, slotname, false, &lsn); + ereport(NOTICE, + (errmsg("created replication slot \"%s\" on publisher", + slotname))); + } + PG_CATCH(); + { + /* Close the connection in case of failure. */ + walrcv_disconnect(wrconn); + PG_RE_THROW(); + } + PG_END_TRY(); /* And we are done with the remote side. */ walrcv_disconnect(wrconn); -- GitLab