Re: locking [user] catalog tables vs 2pc vs logical rep - Mailing list pgsql-hackers

From vignesh C
Subject Re: locking [user] catalog tables vs 2pc vs logical rep
Date
Msg-id CALDaNm1edXweO+3KrWisOYM2jfhrpk2Vvk95DkJ8P8QVG7TotA@mail.gmail.com
Whole thread Raw
In response to RE: locking [user] catalog tables vs 2pc vs logical rep  ("osumi.takamichi@fujitsu.com" <osumi.takamichi@fujitsu.com>)
Responses RE: locking [user] catalog tables vs 2pc vs logical rep
List pgsql-hackers
On Fri, Jun 11, 2021 at 6:57 AM osumi.takamichi@fujitsu.com
<osumi.takamichi@fujitsu.com> wrote:
>
> On Thursday, June 10, 2021 1:30 PM I wrote:
> > On Thursday, June 10, 2021 1:14 PM vignesh C <vignesh21@gmail.com>
> > > On Wed, Jun 9, 2021 at 12:03 PM osumi.takamichi@fujitsu.com
> > > <osumi.takamichi@fujitsu.com> wrote:
> > > >
> > > > On Wednesday, June 9, 2021 12:06 PM Amit Kapila
> > > <amit.kapila16@gmail.com> wrote:
> > > > > On Tue, Jun 8, 2021 at 6:24 PM vignesh C <vignesh21@gmail.com>
> > wrote:
> > > > > >
> > > > > > Thanks for the updated patch.
> > > > > >
> > > > > > I have few comments:
> > > > > > 1) Should we list the actual system tables like
> > > > > > pg_class,pg_trigger, etc instead of any other catalog table?
> > > > > > User has issued an explicit LOCK on pg_class (or any other
> > > > > > catalog
> > > > > > table)
> > > > > >
> > > > >
> > > > > I think the way it is mentioned is okay. We don't need to specify
> > > > > other catalog tables.
> > > > Okay.
> > > >
> > > >
> > > > > > 2) Here This means deadlock, after this we mention deadlock
> > > > > > again for each of the examples, we can remove it if redundant.
> > > > > > This can happen in the following ways:
> > > > I think this sentence works to notify that commands described below
> > > > are major scenarios naturally, to the readers. Then, I don't want to
> > > > remove
> > > it.
> > > >
> > > > If you somehow feel that the descriptions are redundant, how about
> > > > unifying all listitems as nouns. like below ?
> > > >
> > > > * An explicit <command>LOCK</command> on
> > > > <structname>pg_class</structname> (or any other catalog table) in a
> > > > transaction
> > > > * Reordering <structname>pg_class</structname> by
> > > > <command>CLUSTER</command> command in a transaction
> > > > * Executing <command>TRUNCATE</command> on
> > user_catalog_table
> > > >
> > >
> > > This looks good to me. Keep the 2PC documentation patch also on the
> > > same lines.
> > Yeah, of course. Thanks for your confirmation.
> Hi, attached the updated patch-set.
>
> I've conducted some updates.
>
> (1) Added commit messages for all patches
> (2) Sorted out the descriptions of listitem to make them look uniform
> (3) Removed PG11-specific patch and unified the patch from PG11 to PG13,
> which will keep the documents cleanliness for future back-patching, if any.
>
> (4) Removed unnecessary space after 'id'
>
> In v04, there was an unneeded space like below. Fixed.
> In the same logicaldecoding.sgml doc, there is no space after 'id' for sec2.
>
> +   <sect2 id ="logicaldecoding-synchronous-caveats">
> +    <title>Caveats</title>
>
> (5) Fixed the reference accurately by replacing link tag with xref tag.
>
> In v04, I let the reference be inaccurate, because the linkend points to the caveats
> but the link word was "Synchronous Replication Support for Logical Decoding".
>
> +       [user] catalog tables exclusively. To avoid this users must refrain from
> +       having locks on catalog tables (e.g. explicit <command>LOCK</command> command)
> +       in such transactions.
> +       (See <link linkend="logicaldecoding-synchronous-caveats">Synchronous
> +       Replication Support for Logical Decoding</link> for the details.)
>
> So, in v05, I've fixed this to point out the caveats directly.
>
> +       [user] catalog tables exclusively. To avoid this users must refrain from
> +       having locks on catalog tables (e.g. explicit <command>LOCK</command> command)
> +       in such transactions.
> +       (See <xref linkend="logicaldecoding-synchronous-caveats"/> for the details.)
>
> Kindly have a look at the patch-set.
>

Thanks for the updated patch:
Few comments:
1) We have used Reordering and Clustering for the same command, we
could rephrase similarly in both places.
+       <para>
+        Reordering <structname>pg_class</structname> by
<command>CLUSTER</command>
+        command in a transaction.
+       </para>

+       <para>
+        Clustering <structname>pg_trigger</structname> and decoding
<command>PREPARE
+        TRANSACTION</command>, if any published table have a trigger and any
+        operations that will be decoded are conducted.
+       </para>
+      </listitem>

2) Here user_catalog_table should be user catalog table
+       <para>
+        Executing <command>TRUNCATE</command> on user_catalog_table
in a transaction.
+       </para>

Regards,
Vignesh



pgsql-hackers by date:

Previous
From: Kyotaro Horiguchi
Date:
Subject: Re: Race condition in recovery?
Next
From: Yura Sokolov
Date:
Subject: Re: Add PortalDrop in exec_execute_message