Re: Unexpected data when subscribing to logical replication slot

From: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
To: Daniel McKenzie <daniel(dot)mckenzie(at)curvedental(dot)com>, tomas(dot)vondra(at)enterprisedb(dot)com
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Unexpected data when subscribing to logical replication slot
Date: 2024-05-09 16:45:13
Message-ID: 654ded11-6223-462c-ab3f-ee3a17975fd6@aklaver.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 5/9/24 00:32, Daniel McKenzie wrote:

> We've had this running in live now for years without a hiccup so we are
> surprised to learn that we have this massive race condition and it just
> so happens that the hardware is fast enough to process the transaction
> before the .NET application can react to replication slot changes.

On broad scale I'm going to say that over 'for years' there has been an
increase in load on the Postgres server as well as the I/0 system of the
machine it is running on. What you are seeing now is the canary in the
mine giving you the heads up that more trouble lies ahead as the
hardware and software is reaching load limits.

On finer scale my guess is that the following is happening when
synchronous_commit = on:

1) Postgres session #1 does data change.

2) This is replicated out and picked up by wal2json, which sees the new
data.

3) The Postgres server waits for the confirmation that the WAL record
has been written out to disk. Upon confirmation it commits on the
server. This is the part that I am not sure of in relation to wal2json.

4) Postgres session #2 queries the database for the record. In the case
where 3) has not completed it sees the old values as the data change in
session #1 has not committed and therefore the new values are not seen
by other sessions.

>
> Daniel McKenzie
> Software Developer

--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Greg Sabino Mullane 2024-05-09 22:33:39 Re: Postgresql active-active nodes in cluster
Previous Message Torsten Förtsch 2024-05-09 15:16:45 Re: Unexpected data when subscribing to logical replication slot