aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2025-03-16 19:20:49 +0900
committerMichael Paquier <michael@paquier.xyz>2025-03-16 19:20:49 +0900
commit83e5763d4dddd9b24b738d8335b3cbfc2742e4ac (patch)
tree035ff1d38742438c4d2e4c4084e246695925dca2 /src
parent771ba90298e2b79a94678c96f7960274a7896feb (diff)
downloadpostgresql-83e5763d4dddd9b24b738d8335b3cbfc2742e4ac.tar.gz
postgresql-83e5763d4dddd9b24b738d8335b3cbfc2742e4ac.zip
pg_createsubscriber: Remove some code bloat in the atexit() callback
This commit adjusts some code added by e117cfb2f6c6 in the atexit() callback of pg_createsubscriber.c, in charge of performing post-failure cleanup actions. The code loops over all the databases specified, and it is changed here to rely on a single LogicalRepInfo for each database rather than always using LogicalRepInfos, simplifying its logic. Author: Peter Smith <smithpb2250@gmail.com> Discussion: https://postgr.es/m/CAHut+PtdBSVi4iH7BObDVwDNVwOpn+H3fezOBdSTtENx+rhNMw@mail.gmail.com
Diffstat (limited to 'src')
-rw-r--r--src/bin/pg_basebackup/pg_createsubscriber.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/bin/pg_basebackup/pg_createsubscriber.c b/src/bin/pg_basebackup/pg_createsubscriber.c
index a5a2d61165d..6baf92e8024 100644
--- a/src/bin/pg_basebackup/pg_createsubscriber.c
+++ b/src/bin/pg_basebackup/pg_createsubscriber.c
@@ -184,17 +184,19 @@ cleanup_objects_atexit(void)
for (int i = 0; i < num_dbs; i++)
{
- if (dbinfos.dbinfo[i].made_publication || dbinfos.dbinfo[i].made_replslot)
+ struct LogicalRepInfo *dbinfo = &dbinfos.dbinfo[i];
+
+ if (dbinfo->made_publication || dbinfo->made_replslot)
{
PGconn *conn;
- conn = connect_database(dbinfos.dbinfo[i].pubconninfo, false);
+ conn = connect_database(dbinfo->pubconninfo, false);
if (conn != NULL)
{
- if (dbinfos.dbinfo[i].made_publication)
- drop_publication(conn, &dbinfos.dbinfo[i]);
- if (dbinfos.dbinfo[i].made_replslot)
- drop_replication_slot(conn, &dbinfos.dbinfo[i], dbinfos.dbinfo[i].replslotname);
+ if (dbinfo->made_publication)
+ drop_publication(conn, dbinfo);
+ if (dbinfo->made_replslot)
+ drop_replication_slot(conn, dbinfo, dbinfo->replslotname);
disconnect_database(conn, false);
}
else
@@ -204,18 +206,18 @@ cleanup_objects_atexit(void)
* that some objects were left on primary and should be
* removed before trying again.
*/
- if (dbinfos.dbinfo[i].made_publication)
+ if (dbinfo->made_publication)
{
pg_log_warning("publication \"%s\" created in database \"%s\" on primary was left behind",
- dbinfos.dbinfo[i].pubname,
- dbinfos.dbinfo[i].dbname);
+ dbinfo->pubname,
+ dbinfo->dbname);
pg_log_warning_hint("Drop this publication before trying again.");
}
- if (dbinfos.dbinfo[i].made_replslot)
+ if (dbinfo->made_replslot)
{
pg_log_warning("replication slot \"%s\" created in database \"%s\" on primary was left behind",
- dbinfos.dbinfo[i].replslotname,
- dbinfos.dbinfo[i].dbname);
+ dbinfo->replslotname,
+ dbinfo->dbname);
pg_log_warning_hint("Drop this replication slot soon to avoid retention of WAL files.");
}
}