v3-0001-emit-dummy-message-while-setting-up-the-publisher.patch
application/octet-stream
Filename: v3-0001-emit-dummy-message-while-setting-up-the-publisher.patch
Type: application/octet-stream
Part: 0
Message:
RE: speed up a logical replica setup
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch v3-0001
Subject: emit dummy message while setting up the publisher
| File | + | − |
|---|---|---|
| src/bin/pg_basebackup/pg_createsubscriber.c | 26 | 0 |
From e66878760f87687c072a3ff902cba3bfed298b15 Mon Sep 17 00:00:00 2001
From: Hayato Kuroda <kuroda.hayato@fujitsu.com>
Date: Wed, 3 Jul 2024 04:53:26 +0000
Subject: [PATCH v3 1/3] emit dummy message while setting up the publisher
---
src/bin/pg_basebackup/pg_createsubscriber.c | 26 +++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/src/bin/pg_basebackup/pg_createsubscriber.c b/src/bin/pg_basebackup/pg_createsubscriber.c
index 21dd50f808..499f26cf38 100644
--- a/src/bin/pg_basebackup/pg_createsubscriber.c
+++ b/src/bin/pg_basebackup/pg_createsubscriber.c
@@ -781,6 +781,32 @@ setup_publisher(struct LogicalRepInfo *dbinfo)
disconnect_database(conn, false);
}
+ /*
+ * pg_create_logical_replication_slot () returns the end of the
+ * RUNNING_XACT record. If we use the returned value as recovery_target_lsn
+ * as-is, however, we must wait for additional WAL generation because the
+ * parameter requires that the replicated WAL overtake a certain point.
+ * Insert a dummy WAL record to avoid unnecessary waits.
+ */
+ if (!dry_run)
+ {
+ PGconn *conn;
+ PGresult *res = NULL;
+
+ conn = connect_database(dbinfo[0].pubconninfo, true);
+
+ /* Insert dummy data to WAL to move forward the WAL record */
+ res = PQexec(conn,
+ "SELECT pg_catalog.pg_logical_emit_message(true, 'pg_createsubscriber', 'dummy data', true);");
+
+ if (PQresultStatus(res) != PGRES_TUPLES_OK)
+ {
+ pg_log_error("could not run CHECKPOINT: %s",
+ PQresultErrorMessage(res));
+ disconnect_database(conn, true);
+ }
+ }
+
return lsn;
}
--
2.43.0