Re: Decoding speculative insert with toast leaks memory
Amit Kapila <amit.kapila16@gmail.com>
From: Amit Kapila <amit.kapila16@gmail.com>
To: Dilip Kumar <dilipbalaut@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-01T06:55:38Z
Lists: pgsql-hackers
On Tue, Jun 1, 2021 at 11:44 AM Dilip Kumar <dilipbalaut@gmail.com> wrote: > > On Tue, Jun 1, 2021 at 11:00 AM Dilip Kumar <dilipbalaut@gmail.com> wrote: > > > > On Tue, Jun 1, 2021 at 10:21 AM Amit Kapila <amit.kapila16@gmail.com> wrote: > > > > > > > > > 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. > > > > Yeah, that looks like a problem, I will test this case. > > I am able to hit that Assert after slight modification in the original > test case, basically, I added an extra delete in the spec abort > transaction and I got this assertion. > Can we try with other Insert/Update after spec abort to check if there can be other problems due to active toast_hash? > > IMHO, as I stated earlier one way to fix this problem is that we add > the spec abort operation (DELETE + XLH_DELETE_IS_SUPER flag) to the > queue, maybe with action name > "REORDER_BUFFER_CHANGE_INTERNAL_SPEC_ABORT" and as part of processing > that just cleans up the toast and specinsert tuple and nothing else. > If we think that makes sense then I can work on that patch? > I think this should solve the problem but let's first try to see if we have any other problems. Because, say, if we don't have any other problem, then maybe removing Assert might work but I guess we still need to process the tuple to find that we don't need to assemble toast for it which again seems like overkill. -- With Regards, Amit Kapila.
Commits
-
Fix ABI break introduced by commit 4daa140a2f.
- e95f617acc48 11.13 landed
- 72b51e214a2c 12.8 landed
- 56e366f6757d 13.4 landed
-
Fix valgrind issue in pgoutput.c.
- 357cb8f07f95 13.4 landed
-
Fix decoding of speculative aborts.
- 43acadfcebec 9.6.23 landed
- 35f56c124a7a 10.18 landed
- 1f8a934e0a86 11.13 landed
- 40ad7ebff6ca 12.8 landed
- 602a32a685e4 13.4 landed
- 4daa140a2f50 14.0 landed
-
pgoutput: Fix memory leak due to RelationSyncEntry.map.
- d2505681211b 13.4 cited
-
Fix initialization of RelationSyncEntry for streaming transactions.
- 69bd60672af6 14.0 cited
-
Implement streaming mode in ReorderBuffer.
- 7259736a6e5b 14.0 cited