From: | Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com> |
---|---|
To: | "houzj(dot)fnst(at)fujitsu(dot)com" <houzj(dot)fnst(at)fujitsu(dot)com> |
Cc: | "tanghy(dot)fnst(at)fujitsu(dot)com" <tanghy(dot)fnst(at)fujitsu(dot)com>, "pgsql-hackers(at)lists(dot)postgresql(dot)org" <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Table refer leak in logical replication |
Date: | 2021-04-06 03:23:56 |
Message-ID: | CAD21AoC=7W5maPdyqvvV97ic1PAeKKE3kEotTxazK0n4h+z5pA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Tue, Apr 6, 2021 at 10:15 AM houzj(dot)fnst(at)fujitsu(dot)com
<houzj(dot)fnst(at)fujitsu(dot)com> wrote:
>
> > WARNING: relcache reference leak: relation "xxx" not closed.
> >
> > Example of the procedure:
> > ------publisher------
> > create table test (a int primary key);
> > create publication pub for table test;
> >
> > ------subscriber------
> > create table test (a int primary key);
> > create subscription sub connection 'dbname=postgres' publication pub;
> > create function funcA() returns trigger as $$ begin return null; end; $$ language
> > plpgsql; create trigger my_trig after insert or update or delete on test for each
> > row execute procedure funcA(); alter table test enable replica trigger my_trig;
> >
> > ------publisher------
> > insert into test values (6);
> >
> > It seems an issue about reference leak. Anyone can fix this?
>
> It seems ExecGetTriggerResultRel will reopen the target table because it cannot find an existing one.
> Storing the opened table in estate->es_opened_result_relations seems solves the problem.
It seems like commit 1375422c is related to this bug. The commit
introduced a new function ExecInitResultRelation() that sets both
estate->es_result_relations and estate->es_opened_result_relations. I
think it's better to use ExecInitResultRelation() rather than directly
setting estate->es_opened_result_relations. It might be better to do
that in create_estate_for_relation() though. Please find an attached
patch.
Since this issue happens on only HEAD and it seems an oversight of
commit 1375422c, I don't think regression tests for this are
essential.
Regards,
--
Masahiko Sawada
EDB: https://www.enterprisedb.com/
Attachment | Content-Type | Size |
---|---|---|
fix_relcache_leak_in_lrworker.patch | application/x-patch | 1.3 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Andrew Gierth | 2021-04-06 03:52:44 | Re: ALTER TABLE ADD COLUMN fast default |
Previous Message | Peter Geoghegan | 2021-04-06 03:13:04 | Re: New IndexAM API controlling index vacuum strategies |