Re: speed up a logical replica setup

Shlok Kyal <shlok.kyal.oss@gmail.com>

From: Shlok Kyal <shlok.kyal.oss@gmail.com>
To: Euler Taveira <euler@eulerto.com>
Cc: "kuroda.hayato@fujitsu.com" <kuroda.hayato@fujitsu.com>, "pgsql-hackers@lists.postgresql.org" <pgsql-hackers@lists.postgresql.org>, Michael Paquier <michael@paquier.xyz>, Peter Eisentraut <peter@eisentraut.org>, Andres Freund <andres@anarazel.de>, Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>, Amit Kapila <amit.kapila16@gmail.com>, Fabrízio de Royes Mello <fabriziomello@gmail.com>, vignesh C <vignesh21@gmail.com>
Date: 2024-03-08T07:03:00Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. pg_createsubscriber: Remove obsolete comment

  2. pg_createsubscriber: Fix an unpredictable recovery wait time.

  3. Fix unstable test in 040_pg_createsubscriber.

  4. Fix the testcase introduced in commit 81d20fbf7a.

  5. Further weaken new pg_createsubscriber test on Windows.

  6. Temporarily(?) weaken new pg_createsubscriber test on Windows.

  7. Make pg_createsubscriber warn if publisher has two-phase commit enabled.

  8. Make pg_createsubscriber more wary about quoting connection parameters.

  9. pg_createsubscriber: Remove failover replication slots on subscriber

  10. pg_createsubscriber: Remove replication slot check on primary

  11. pg_createsubscriber: Only --recovery-timeout controls the end of recovery process

  12. pg_createsubscriber: creates a new logical replica from a standby server

  13. Add some const decorations

  14. Add option force_initdb to PostgreSQL::Test::Cluster:init()

  15. Remove MSVC scripts

Attachments

Hi,

> Thanks for the feedback. I'm attaching v26 that addresses most of your comments
> and some issues pointed by Vignesh [1].

I have tested the patch in windows. The pg_createsubscriber command is
failing in windows:

pg_createsubscriber -D ..\standby -d postgres  -P "host=localhost
port=5432" --subscriber-port 9000  -r -v
pg_createsubscriber: validating connection string on publisher
pg_createsubscriber: validating connection string on subscriber
pg_createsubscriber: checking if directory "../standby" is a cluster
data directory
pg_createsubscriber: getting system identifier from publisher
pg_createsubscriber: system identifier is 7343852918334005220 on publisher
pg_createsubscriber: getting system identifier from subscriber
pg_createsubscriber: system identifier is 7343852918334005220 on subscriber
pg_createsubscriber: standby is up and running
pg_createsubscriber: stopping the server to start the transformation steps
pg_createsubscriber: server was stopped
pg_createsubscriber: starting the standby with command-line options
pg_createsubscriber: server was started
pg_createsubscriber: checking settings on subscriber
pg_createsubscriber: error: connection to database failed: connection
to server on socket "D:/project/pg_euler_v27_debug/bin/.s.PGSQL.9000"
failed: Connection refused (0x0000274D/10061)
        Is the server running locally and accepting connections on that socket?

I found out that
+ sub_base_conninfo = psprintf("host=%s port=%u user=%s
fallback_application_name=%s",
+                opt.socket_dir, opt.sub_port, opt.sub_username, progname);

sub_base_conninfo has 'host' even for windows.
So when 'start_standby_server' is called it starts the server in
localhost but when we try to connect to standby inside
'check_subscriber', it tries to connect to the host defined in the
string 'sub_base_conninfo'. So, we are getting the error.

Created a top-up patch v27-0005 to resolve this.
Since there is no change in 0001, 0002...0004 patches that was
previously posted, I have reused the same version number.

Thanks and regards,
Shlok Kyal