RE: Skipping logical replication transactions on subscriber side

From: "houzj(dot)fnst(at)fujitsu(dot)com" <houzj(dot)fnst(at)fujitsu(dot)com>
To: Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>
Cc: Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, "tanghy(dot)fnst(at)fujitsu(dot)com" <tanghy(dot)fnst(at)fujitsu(dot)com>, "osumi(dot)takamichi(at)fujitsu(dot)com" <osumi(dot)takamichi(at)fujitsu(dot)com>, Alexey Lesovsky <lesovsky(at)gmail(dot)com>, Peter Eisentraut <peter(dot)eisentraut(at)enterprisedb(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>, Greg Nancarrow <gregn4422(at)gmail(dot)com>
Subject: RE: Skipping logical replication transactions on subscriber side
Date: 2021-09-14 02:26:57
Message-ID: OS0PR01MB571662435AE96F49BEB91F8294DA9@OS0PR01MB5716.jpnprd01.prod.outlook.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

From Thur, Sep 9, 2021 10:33 PM Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com> wrote:
> Sorry for the late response. I've attached the updated patches that incorporate
> all comments unless I missed something. Please review them.

Thanks for the new version patches.
Here are some comments for the v13-0001 patch.

1)

+ pgstat_setheader(&errmsg.m_hdr, PGSTAT_MTYPE_SUBSCRIPTIONERRPURGE);
+ pgstat_send(&errmsg, len);
+ errmsg.m_nentries = 0;
+ }

It seems we can invoke pgstat_setheader once before the loop like the
following:

+ errmsg.m_nentries = 0;
+ errmsg.m_subid = subent->subid;
+ pgstat_setheader(&errmsg.m_hdr, PGSTAT_MTYPE_SUBSCRIPTIONERRPURGE);

2)
+ pgstat_setheader(&submsg.m_hdr, PGSTAT_MTYPE_SUBSCRIPTIONPURGE);
+ pgstat_send(&submsg, len);

Same as 1), we can invoke pgstat_setheader once before the loop like:
+ submsg.m_nentries = 0;
+ pgstat_setheader(&submsg.m_hdr, PGSTAT_MTYPE_SUBSCRIPTIONPURGE);

3)

+/* ----------
+ * PgStat_MsgSubscriptionErrPurge Sent by the autovacuum to purge the subscription
+ * errors.

The comments said it's sent by autovacuum, would the manual vacuum also send
this message ?

4)
+
+ pgstat_send(&msg, offsetof(PgStat_MsgSubscriptionErr, m_reset) + sizeof(bool));
+}

Does it look cleaner that we use the offset of m_relid here like the following ?

pgstat_send(&msg, offsetof(PgStat_MsgSubscriptionErr, m_relid));

Best regards,
Hou zj

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2021-09-14 02:40:19 Re: postgres.h included from relcache.h - but removing it breaks pg_upgrade
Previous Message Andres Freund 2021-09-14 01:32:55 Re: Don't clean up LLVM state when exiting in a bad way