diff options
author | Michael Paquier <michael@paquier.xyz> | 2025-03-16 19:20:49 +0900 |
---|---|---|
committer | Michael Paquier <michael@paquier.xyz> | 2025-03-16 19:20:49 +0900 |
commit | 83e5763d4dddd9b24b738d8335b3cbfc2742e4ac (patch) | |
tree | 035ff1d38742438c4d2e4c4084e246695925dca2 /src | |
parent | 771ba90298e2b79a94678c96f7960274a7896feb (diff) | |
download | postgresql-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.c | 26 |
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."); } } |