Re: Decoding speculative insert with toast leaks memory

Dilip Kumar <dilipbalaut@gmail.com>

From: Dilip Kumar <dilipbalaut@gmail.com>
To: Amit Kapila <amit.kapila16@gmail.com>
Cc: Andres Freund <andres@anarazel.de>, Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>, Peter Eisentraut <peter.eisentraut@2ndquadrant.com>, Petr Jelinek <petr.jelinek@enterprisedb.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Tomas Vondra <tomas.vondra@enterprisedb.com>
Date: 2021-06-01T04:29:41Z
Lists: pgsql-hackers
On Tue, Jun 1, 2021 at 9:53 AM Amit Kapila <amit.kapila16@gmail.com> wrote:
>
> On Mon, May 31, 2021 at 8:12 PM Dilip Kumar <dilipbalaut@gmail.com> wrote:
> >
> > On Mon, May 31, 2021 at 6:32 PM Dilip Kumar <dilipbalaut@gmail.com> wrote:
> > >
> > > I missed to do the test for streaming.  I will to that tomorrow and reply back.
> >
> > For streaming transactions this issue is not there. Because this
> > problem will only occur if the last change is *SPEC INSERT * and after
> > that there is no other UPDATE/INSERT change because on that change we
> > are resetting the toast table.  Now, if the transaction has only *SPEC
> > INSERT* without SPEC CONFIRM or any other INSERT/UPDATE then we will
> > not stream it.  And if we get any next INSERT/UPDATE then only we can
> > select this for stream but in that case toast will be reset.  So as of
> > today for streaming mode we don't have this problem.
> >
>
> What if the next change is a different SPEC_INSERT
> (REORDER_BUFFER_CHANGE_INTERNAL_SPEC_INSERT)? I think in that case we
> will stream but won't free the toast memory.

But if the next change is again the SPEC INSERT then we will keep the
PARTIAL change flag set and we will not select this transaction for
stream right?

-- 
Regards,
Dilip Kumar
EnterpriseDB: http://www.enterprisedb.com



Commits

  1. Fix ABI break introduced by commit 4daa140a2f.

  2. Fix valgrind issue in pgoutput.c.

  3. Fix decoding of speculative aborts.

  4. pgoutput: Fix memory leak due to RelationSyncEntry.map.

  5. Fix initialization of RelationSyncEntry for streaming transactions.

  6. Implement streaming mode in ReorderBuffer.