Re: [HACKERS] Replication status in logical replication

Masahiko Sawada <sawada.mshk@gmail.com>

From: Masahiko Sawada <sawada.mshk@gmail.com>
To: Tels <nospam-pg-abuse@bloodgate.com>
Cc: Petr Jelinek <petr.jelinek@2ndquadrant.com>, Thomas Munro <thomas.munro@enterprisedb.com>, Vaishnavi Prabakaran <vaishnaviprabakaran@gmail.com>, Daniel Gustafsson <daniel@yesql.se>, Peter Eisentraut <peter.eisentraut@2ndquadrant.com>, Simon Riggs <simon@2ndquadrant.com>, Noah Misch <noah@leadboat.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2017-12-26T10:26:27Z
Lists: pgsql-hackers

Attachments

On Tue, Dec 26, 2017 at 6:19 PM, Tels <nospam-pg-abuse@bloodgate.com> wrote:
> Moin,
>
> On Mon, December 25, 2017 7:26 pm, Masahiko Sawada wrote:
>> On Tue, Dec 26, 2017 at 1:10 AM, Petr Jelinek
>> <petr.jelinek@2ndquadrant.com> wrote:
>>> On 21/11/17 22:06, Masahiko Sawada wrote:
>>>>
>>>> After investigation, I found out that my previous patch was wrong
>>>> direction. I should have changed XLogSendLogical() so that we can
>>>> check the read LSN and set WalSndCaughtUp = true even after read a
>>>> record without wait. Attached updated patch passed 'make check-world'.
>>>> Please review it.
>>>>
>>>
>>> Hi,
>>>
>>> This version looks good to me and seems to be in line with what we do in
>>> physical replication.
>>>
>>> Marking as ready for committer.
>
> (Sorry Masahiko, you'll get this twice, as fumbled the reply button.)
>
> I have not verifed that comment and/or code are correct, just a grammar fix:
>
> +                /*
> +                 * If we've sent a record is at or beyond the flushed
> point, then
> +                 * we're caught up.
>
> That should read more like this:
>
> "If we've sent a record that is at or beyond the flushed point, we have
> caught up."
>

Thank you for reviewing the patch!
Actually, that comment is inspired by the comment just below comment.
ISTM it's better to fix both if grammar of them is not appropriate.

+
+      /*
+        * If we've sent a record that is at or beyond the flushed point, we
+        * have caught up.
+        */
+       if (sentPtr >= GetFlushRecPtr())
+           WalSndCaughtUp = true;
   }
   else
   {
       /*
        * If the record we just wanted read is at or beyond the flushed
        * point, then we're caught up.
        */
       if (logical_decoding_ctx->reader->EndRecPtr >= GetFlushRecPtr())
       {

Attached a updated patch. Please review it.

Regards,

--
Masahiko Sawada
NIPPON TELEGRAPH AND TELEPHONE CORPORATION
NTT Open Source Software Center

Commits

  1. Make logical WAL sender report streaming state appropriately