From: | Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> |
---|---|
To: | Dilip Kumar <dilipbalaut(at)gmail(dot)com> |
Cc: | Andres Freund <andres(at)anarazel(dot)de>, Ashutosh Bapat <ashutosh(dot)bapat(dot)oss(at)gmail(dot)com>, Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com>, Petr Jelinek <petr(dot)jelinek(at)enterprisedb(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Tomas Vondra <tomas(dot)vondra(at)enterprisedb(dot)com> |
Subject: | Re: Decoding speculative insert with toast leaks memory |
Date: | 2021-06-01 04:51:35 |
Message-ID: | CAA4eK1J5SwB9-uiZ7sxkhmDjjmN4D8D-p3EOcD3+0OKN3C2dxQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Tue, Jun 1, 2021 at 9:59 AM Dilip Kumar <dilipbalaut(at)gmail(dot)com> wrote:
>
> On Tue, Jun 1, 2021 at 9:53 AM Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> wrote:
> >
> > On Mon, May 31, 2021 at 8:12 PM Dilip Kumar <dilipbalaut(at)gmail(dot)com> wrote:
> > >
> > > On Mon, May 31, 2021 at 6:32 PM Dilip Kumar <dilipbalaut(at)gmail(dot)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?
>
Right, I think you can remove the change related to stream xact and
probably write some comments on why we don't need it for streamed
transactions. But, now I have another question related to fixing the
non-streamed case. What if after the missing spec_confirm we get the
delete operation in the transaction? It seems
ReorderBufferToastReplace always expects Insert/Update if we have
toast hash active in the transaction.
--
With Regards,
Amit Kapila.
From | Date | Subject | |
---|---|---|---|
Next Message | Amit Kapila | 2021-06-01 05:28:10 | Re: Skipping logical replication transactions on subscriber side |
Previous Message | Masahiko Sawada | 2021-06-01 04:37:22 | Re: Skipping logical replication transactions on subscriber side |