public inbox for [email protected]
help / color / mirror / Atom feedFrom: Koen De Groote <[email protected]>
To: Adrian Klaver <[email protected]>
Cc: PostgreSQL General <[email protected]>
Subject: Re: On a subscriber, why is last_msg_send_time in pg_stat_subscription sometimes null?
Date: Fri, 23 Aug 2024 21:31:51 +0200
Message-ID: <CAGbX52GSTNeOiDb7L_OGs+6XyirU-uEJZ35c-dcjvX1xxm85=w@mail.gmail.com> (raw)
In-Reply-To: <[email protected]>
References: <CAGbX52H8dDW8nVC8Zxg0-HFY58fAXd93XuxC83_DPHARZkpepw@mail.gmail.com>
<[email protected]>
Adrian,
Thanks for pointing me at the source code.
Digging a bit, the view seems to eventually get its data on last msg send
time from here:
https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/backend/replication/logical/launche...
And in particular, this:
1332 if (worker.last_send_time == 0)
1333 nulls[5] = true;
1334 else
1335 values[5] = TimestampTzGetDatum(worker.last_send_time);
1336 if (worker.last_recv_time == 0)
1337 nulls[6] = true;
1338 else
1339 values[6] = TimestampTzGetDatum(worker.last_recv_time);
I don't have any knowledge of C, or postgres internals, so I may well be
wrong in what follows:
From the bit of comment you posted my impression is that this means there
are separate workers that each send their update, that is then reflected in
the output of the pg_stat_subscription table... many workers, but only 1
table to show metrics, to show both the update by the leader and the
parallel workers...
And these parallel workers get created on the fly, I assume? So they might
well have a last_send_time of 0 if they haven't done anything yet?
What I would expect to see is a table that tells me how a particular
publishers/subscriber is doing, and the metrics around that process, and
the concept of "when data was last sent" to be persistent on the level of
the publisher/subscriber, not based on the lifespan of ephemeral workers
that each time they get created start at 0 and so now the table claims
"last_send_msg" is NULL because of it.
Am I getting that wrong? Is my understanding mistaken?
Regards,
Koen De Groote
On Fri, Aug 23, 2024 at 5:02 PM Adrian Klaver <[email protected]>
wrote:
> On 8/23/24 07:33, Koen De Groote wrote:
> > I'm running this query:
> >
> > SELECT subname, received_lsn, latest_end_lsn,
> > last_msg_send_time, last_msg_receipt_time
> > FROM pg_catalog.pg_stat_subscription;
> >
> > And "last_msg_send_time" will sometimes be null. All I can find in the
> > documentation is that this value represents: "Send time of last message
> > received from origin WAL sender; NULL for parallel apply workers"
> >
> > But I have no context for what parallel apply workers are or why they
> > are NULL sometimes and other times not. >
> > Can anyone explain?
>
> The source has that information:
>
>
> https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/backend/replication/logical/applypa...
>
> The top part explains the process.
>
> As to the time:
>
> /*
> * There are three fields in each message received by the parallel apply
> * worker: start_lsn, end_lsn and send_time. Because we have updated these
> * statistics in the leader apply worker, we can ignore these fields in
> the
> * parallel apply worker (see function LogicalRepApplyLoop).
> */
>
> >
> > Regards,
> > Koen De Groote
>
> --
> Adrian Klaver
> [email protected]
>
>
view thread (4+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected], [email protected]
Subject: Re: On a subscriber, why is last_msg_send_time in pg_stat_subscription sometimes null?
In-Reply-To: <CAGbX52GSTNeOiDb7L_OGs+6XyirU-uEJZ35c-dcjvX1xxm85=w@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox