Re: locking [user] catalog tables vs 2pc vs logical rep

Поиск
Список
Период
Сортировка
От vignesh C
Тема Re: locking [user] catalog tables vs 2pc vs logical rep
Дата
Msg-id CALDaNm1YuxZR3OsDSbv0MAQ_7a7emjcvATJhh4QNi71w+=NBRA@mail.gmail.com
обсуждение исходный текст
Ответ на RE: locking [user] catalog tables vs 2pc vs logical rep  ("osumi.takamichi@fujitsu.com" <osumi.takamichi@fujitsu.com>)
Ответы RE: locking [user] catalog tables vs 2pc vs logical rep  ("osumi.takamichi@fujitsu.com" <osumi.takamichi@fujitsu.com>)
Список pgsql-hackers
On Thu, Jun 3, 2021 at 9:18 AM osumi.takamichi@fujitsu.com
<osumi.takamichi@fujitsu.com> wrote:
>
> On Tuesday, June 1, 2021 4:33 PM Peter Smith <smithpb2250@gmail.com>
> > To: Andres Freund <andres@anarazel.de>
> > Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>; Amit Kapila
> > <amit.kapila16@gmail.com>; Markus Wanner
> > <markus.wanner@enterprisedb.com>
> > Subject: Re: locking [user] catalog tables vs 2pc vs logical rep
> >
> > Hi.
> >
> > The attached PG docs patch about catalog deadlocks was previously
> > implemented in another thread [1], but it seems more relevant to this one.
> >
> > PSA.
> Thank you for providing the patch.
> I have updated your patch to include some other viewpoints.
>
> For example, CLUSTER command scenario
> that also causes hang of PREPARE in synchronous mode.
> We get this deadlock, using the 2PC patch-set.
>
> FYI, the scenario is
> (1) create a table with a trigger
> (2) create pub and sub in synchronous mode
> (3) then, execute CLUSTER pg_trigger USING pg_trigger_oid_index,
>     and do some operations (e.g. INSERT) on the trigger-attached table and PREPARE
>
> The mechanism of this is
> walsender tries to take a lock on pg_trigger if the table has a trigger,
> but, pg_trigger is already locked by the CLUSTER command, which leads to the deadlock.
> Then, this scenario requires some operations on the table which has trigger
> because it invokes the walsender to take the lock described above.
>
> I also included the description about TRUNCATE on user_catalog_table
> in the patch. Please have a look at this patch.

1) I was not able to generate html docs with the attached patch:
logicaldecoding.sgml:1128: element sect1: validity error : Element
sect1 content does not follow the DTD, expecting (sect1info? , (title
, subtitle? , titleabbrev?) , (toc | lot | index | glossary |
bibliography)* , (((calloutlist | glosslist | bibliolist |
itemizedlist | orderedlist | segmentedlist | simplelist | variablelist
| caution | important | note | tip | warning | literallayout |
programlisting | programlistingco | screen | screenco | screenshot |
synopsis | cmdsynopsis | funcsynopsis | classsynopsis | fieldsynopsis
| constructorsynopsis | destructorsynopsis | methodsynopsis |
formalpara | para | simpara | address | blockquote | graphic |
graphicco | mediaobject | mediaobjectco | informalequation |
informalexample | informalfigure | informaltable | equation | example
| figure | table | msgset | procedure | sidebar | qandaset | task |
anchor | bridgehead | remark | highlights | abstract | authorblurb |
epigraph | indexterm | beginpage)+ , (refentry* | sect2* |
simplesect*)) | refentry+ | sect2+ | simplesect+) , (toc | lot | index
| glossary | bibliography)*), got (title sect2 sect2 note )
  </sect1>

2) You could change hang to deadlock:
+       logical decoding of published table within the same
transaction leads to a hang.

Regards,
Vignesh



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Amit Kapila
Дата:
Сообщение: Re: Decoding of two-phase xacts missing from CREATE_REPLICATION_SLOT command
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Fixup some appendStringInfo and appendPQExpBuffer calls